H.3. pgcompacttable#
H.3. pgcompacttable #
H.3.1. Обзор #
pgcompacttable - это инструмент уменьшения размера раздутых таблиц и индексов без тяжелых блокировок.
Это предназначено для переорганизации данных в таблицах и восстановления индексов с целью возврата дискового пространства без влияния на производительность базы данных.
H.3.2. Настройка #
pgcompacttable написан на Perl и требует библиотеку Perl DBI,
очевидно, с модулем поддержки Tantor BE. Зависимости могут быть легко установлены:
на операционной системе Debian-based Linux с помощью
apt-get install libdbi-perl libdbd-pg-perl
В целевой базе данных модуль contrib
pgstattuple должен быть установлен с помощью
create extension if not exists pgstattuple;
H.3.3. Запустите #
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.
H.3.4. Совместимость #
pgcompacttable в настоящее время поддерживает PostgreSQL начиная с версии 9.2. Поддерживается перестроение частичных индексов, функциональных индексов, уникальных индексов, используемых для внешних ключей и индексов, уже размещенных в другом табличнoм пространстве.
H.3.5. Что насчет pg_repack? #
В отличие от другого популярного инструмента pg_repack
этот инструмент имеет некоторые преимущества:
не требует большого количества свободного места
таблицы обрабатываются на месте
индексы перестраиваются один за другим, от наименьшего к наибольшему
поэтому максимальное требуемое пространство равно размеру самого большого индекса
таблицы обрабатываются с адаптивной задержкой, чтобы предотвратить резкие скачки ввода-вывода и задержки репликации (см. опцию
--delay-ratio)