TOAST в PostgreSQL умеет сжимать большие значения и выносить их из основной строки в отдельную таблицу. При выборе алгоритма важен способ чтения этих значений.
В экспериментах PlanetScale сравнивают pglz и LZ4. Для превью
left(body, 200) pglz позволяет ограничить объём читаемых сжатых данных. Для LZ4 PostgreSQL сначала получает значение целиком. На проверенных больших текстах это дало около 1 мс против 16 мс.Другой случай — чтение диапазона байтов из большого
bytea. Стратегия EXTERNAL хранит значение без сжатия, и PostgreSQL может обратиться прямо к нужным чанкам. Это экономит работу при чтении, но требует больше места.Цифры относятся к конкретным данным и запросам. Перед сменой хранения измерьте свою нагрузку. И учтите: изменение настройки сжатия само по себе не перекодирует уже сохранённые значения.
#postgresql #производительность
