Сможет ли gzipping + storage bytea сэкономить больше дискового пространства, чем хранилище в виде текста?
Если у меня есть таблица, содержащая 30 миллионов строк, и один из столбцов в таблице в настоящее время text
колонка. Столбец заполняется случайными строками размером от 2 до 10 кб. Мне не нужно искать строки напрямую.
Я собираюсь сжать строки перед их сохранением (обычно их размер уменьшается в 2 раза) и вместо этого сохранить их в bytea
колонка.
Я читал, что Postgresql делает некоторое сжатие text
столбцы по умолчанию, поэтому мне интересно: будет ли какое-либо фактическое сокращение дискового пространства как результат предлагаемого изменения?
Я использую Postgresql 9.3
1 ответ
Магазины PostgreSQL text
столбцы, которые превышают около 2000 байтов в таблице TOAST и сжимают данные.
Сжатие быстрое, но не очень хорошее, поэтому вы можете сэкономить, если будете использовать другой метод сжатия. Поскольку сохраненные значения не очень велики, экономия, вероятно, будет небольшой.
Если вы хотите пойти по этому пути, вы должны отключить сжатие для этого уже сжатого столбца:
ALTER TABLE tab
ALTER bin_col SET STORAGE EXTERNAL;
Я бы порекомендовал вам использовать стандартное сжатие PostgreSQL и сохранить простоту, но лучше всего было бы запустить тест и посмотреть, сможете ли вы получить выгоду от использования специального сжатия.