pgcompacttable#

pgcompacttable

pgcompacttable

pgcompacttable — уменьшение размера раздутых таблиц и индексов без тяжелых блокировок

pgcompacttable

pgcompacttable - это инструмент уменьшения размера раздутых таблиц и индексов без тяжелых блокировок.

Автором pgcompacttable является Data Egret. Смотреть на GitHub.

Это предназначено для переорганизации данных в таблицах и восстановления индексов с целью возврата дискового пространства без влияния на производительность базы данных.

Настройка

pgcompacttable написан на Perl и требует библиотеку Perl DBI, очевидно, с модулем поддержки Tantor SE. Зависимости могут быть легко установлены:

  • на операционной системе Debian-based Linux с помощью apt-get install libdbi-perl libdbd-pg-perl

  • RedHat/Centos с помощью yum install perl-Time-HiRes perl-DBI perl-DBD-Pg

В целевой базе данных должен быть установлен модуль contrib pgstattuple с помощью команды create extension if not exists pgstattuple;

Запустить

pgcompacttable можно запустить от любого пользователя ОС (и даже на другом хосте, см. опцию --host; хотя рекомендуется запускать его на том же хосте с целевой базой данных), но требуется доступ суперпользователя Tantor SE. Предпочтительным способом является запуск от владельца кластера Tantor SE, обычно postgres. В этом случае pgcompacttable может выполнить ionice -c 3 для идентификатора процесса Tantor SE снизить приоритет ввода-вывода.

pgcompacttable --man Выводит список доступных параметров и информацию об использовании.

pgcompacttable --all --verbose Компактирует все раздутые таблицы во всех базах данных в кластере, включая индексы. Выводит дополнительную информацию о прогрессе.

pgcompacttable --dbname billing --exclude-schema pgq Компактирует все раздутые таблицы в базе данных billing и их раздутые индексы, за исключением тех, которые находятся в схеме pgq.

pgcompacttable --dbname billing -t operations -f Принудительно компактирует таблицу operations в базе данных billing. Обратите внимание, что таблицы и индексы с раздуванием менее 20% (жестко заданная константа MINIMAL_COMPACT_PERCENT) считаются нормальными и не обрабатываются, пока не будет указана опция --force.

Совместимость

pgcompacttable в настоящее время поддерживает PostgreSQL начиная с версии 9.2. Поддерживается перестроение частичных индексов, функциональных индексов, уникальных индексов, используемых для внешних ключей и индексов, уже размещенных в другом табличнoм пространстве.

Что насчет pg_repack?

В отличие от другого популярного инструмента pg_repack этот инструмент имеет некоторые преимущества:

  • не требует большого количества свободного места

    • таблицы обрабатываются на месте

    • индексы перестраиваются один за другим, от наименьшего к наибольшему

    поэтому максимальное требуемое пространство равно размеру самого большого индекса

  • таблицы обрабатываются с адаптивной задержкой, чтобы предотвратить резкие скачки ввода-вывода и задержки репликации (см. опцию --delay-ratio)