The dark side of компрессия в PostgreSQL

TantorLabs 9 минут назад The dark side of компрессия в PostgreSQL 39 мин 176 Блог компании Тантор Лабс PostgreSQL * Базы данных * 1С * Системное администрирование * Обзор Большинство материалов о компрессии в PostgreSQL...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
В сфере искусственного интеллекта произошло заметное событие. TantorLabs 9 минут назад The dark side of компрессия в PostgreSQL 39 мин 176 Блог компании Тантор Лабс PostgreSQL * Базы данных * 1С * Системное администрирование * Обзор Большинство материалов о компрессии в PostgreSQL отвечают на вопрос «во сколько раз удалось уменьшить базу». Мы предлагаем посмотреть на проблему с другой стороны - какой ценой достигается эта экономия? В статье разбираем архитектурные компромиссы различных подходов к компрессии страниц, объясняем, почему при разработке CSM в Tantor Postgres отказались от погони за максимальным коэффициентом сжатия, и показываем результаты нагрузочных испытаний на реальных базах 1С.
Когда речь заходит о компрессии данных в PostgreSQL, разговор почти всегда сводится к коэффициенту сжатия. Вендоры показывают красивые цифры: база становится меньше в три, пять или даже восемь раз, и подразумевается, что в целом в эти же 3-8 раз снизится нагрузка на файловую систему. Но это не всегда так, и стремление добиться максимального коэффициента компрессии само по себе может оказаться ложной целью.
Технические детали
Более важными показателями могут явиться коэффициенты усиления записи (write amplification factor) и усиления чтения (read amplification factor). Далее мы покажем, что уменьшение размера базы в k раз не гарантирует уменьшения записи в k раз. Скорее, это идеальное значение, к которому всё только стремится.
ОглавлениеОбъекты сжатияКомпрессия страниц переменного размера и фиксированного размераАлгоритмы сжатия: по отдельности PGLZ, LZ4, ZSTD и их сравнениеАнализ потенциала сжатияСкрипты анализаАвтоматический подбор параметров компрессииУпрощенный вариант сжатияСжатие при создании таблицНагрузочное тестирование 1ССинтетические тестыСкорость подъема данных в shared_buffersНебольшая таблица (2,6 GB → 326 MB) и большая таблица (95 GB → 12 GB)Влияние io_methodТесты с нагрузкойЭффективность записиСравнительная таблицаЗаключениеОбъекты сжатияСуществующие технологии сжатия в PostgreSQL оперируют объектами двух типов – это либо значения типов данных переменной длины (varlena) либо страницы таблиц и индексов. Сжатие объектов varlena имеет простую организацию, не нарушающую общую идеологию хранения значений. Заголовок varlena содержит специальные поля, указывающие на параметры сжатия за которыми следуют сжатые данные.
Основной недостаток такого подхода - ограниченность применения, а именно только большие значения переменной длины (как, правило, TOAST). У страничного сжатия есть существенные преимущества. Во-первых, расширяется возможность применения — практически все данные в Postgres имеют страничную организацию.
Отраслевые последствия
Во-вторых, размер страницы обычно значительно больше размера varlena значения, а это повышает эффективность сжатия. Второй вариант интереснее, поскольку именно он позволяет полноценно сжимать таблицы и индексы. Сжатие выполняется на уровне менеджера хранения, т.
модуля PostgreSQL, ответственного за чтение и запись страниц.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.






