pgcompacttable#
pgcompacttable
pgcompacttable — уменьшение размера раздутых таблиц и индексов без тяжелых блокировок
pgcompacttable
pgcompacttable
- это инструмент уменьшения размера раздутых таблиц и индексов без тяжелых блокировок.
Автором pgcompacttable
является Data Egret.
Смотреть на GitHub.
Это предназначено для переорганизации данных в таблицах и восстановления индексов с целью возврата дискового пространства без влияния на производительность базы данных.
Настройка
pgcompacttable
написан на Perl и требует библиотеку Perl DBI,
очевидно, с модулем поддержки Tantor BE. Зависимости могут быть легко установлены:
на операционной системе 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 BE. Предпочтительным способом является запуск
от владельца кластера Tantor BE, обычно postgres
.
В этом случае pgcompacttable
может выполнить ionice -c 3
для
идентификатора процесса Tantor BE снизить приоритет ввода-вывода.
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
)