4.2. CFS (сжатая файловая система)
CFS добавляет в Shardman сжатие на уровне страницы. Сжатие можно включить только для отдельных табличных пространств. Для сжатия табличного пространства нужно включить параметр сжатия при создании этого табличного пространства. Например:
CREATE TABLESPACE data LOCATION '/mnt/data-{rgid}' WITH (global, compression='zlib');
Теперь в этом табличном пространстве можно создавать таблицы и индексы или перемещать в него существующие таблицы или индексы.
CREATE TABLE pgbench_branches ( bid integer NOT NULL PRIMARY KEY USING INDEX TABLESPACE data, bbalance integer, filler character(88) ) WITH (distributed_by = 'bid') TABLESPACE data;
Коэффициент сжатия таблицы можно предварительно оценить с помощью cfs_estimate(relation)
. Эта функция считывает первые десять процентов блоков отношения (но не более 100 блоков), сжимает их и возвращает средний коэффициент сжатия. Так, если она возвращает значение 7.8, это означает, что сжатая таблица будет занимать почти в 8 раз меньше места, чем исходная. Расчёт производится для всех доступных алгоритмов сжатия.
Предупреждение
Функцию cfs_estimate(relation)
следует использовать только после контрольной точки, чтобы избежать некорректных оценок.
Функция cfs_compression_ratio()
возвращает фактическое значение степени сжатия для всех сегментов сжатого отношения. Однако для секционированных и сторонних таблиц она возвращает значение типа NaN
, поэтому работает только для локальных секций сегментированной таблицы.
Полную документацию CFS можно найти здесь.