Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Альтернатива Postgres VACUUM FULL pg_repack


Альтернатива Postgres VACUUM FULL pg_repack

VACUUM FULL очищает таблицу и перезаписывает её в новый файл
При этом файл уменьшается в размере
Для этого на таблицу навешивают блокировку
Поэтому на некоторое время таблица становится недоступной

pg_repack — утилита и расширение для реорганизации таблиц

ОФ.Док. на примере версии 14 (подставь свою версию):
https://postgrespro.ru/docs/postgrespro/14/app-pgrepack

Дока по расширению:
https://reorg.github.io/pg_repack/

Установка на примере 14 версии в ubuntu:
apt-get update
apt install postgresql-14-repack

Автозагрузка расширения при каждом старте PostgreSQL

Добавляем параметр в postgresql.conf:
shared_preload_libraries = 'pg_repack'
# systemctl restart postgresql-14
или
# su postgres
$ psql
psql # set shared_preload_libraries = 'pg_repack';
/usr/pgsql-14/bin/pg_ctl -D $PGDATA restart -mf

Процедура

# su postgres
 
Создать расширение для БД:
$ psql -c "CREATE EXTENSION pg_repack" -d имя_базы
или
# psql -U postgres -c "CREATE EXTENSION pg_repack" -d имя_базы

Примеры использования:
$ pg_repack -t имя_таблицы - перепаковываем конкретную таблицу
$ pg_repack -t имя_таблицы_1 -t имя_таблицы_2 - перепаковываем несколько таблиц
$ pg_repack -d имя_базы - перепаковываем всю базу

Ааналог vacuum full всех баз в кластере, где установлены расширения:
$ pg_repack -na

Ааналог vacuum full для базы имя_базы
$ pg_repack -n -d имя_базы

Ааналог vacuum full для базы имя_базы с перестроением индексов в 3 потока:
$ pg_repack -d имя_базы -n -j 3

Список расширений БД:
postgres=# \c имя_базы
имя_базы=# SELECT * FROM pg_available_extensions where installed_version is not null;
или
имя_базы=# SELECT * FROM pg_available_extensions WHERE name = 'pg_repack';

Скрипт для cron:
/root/pg_repack.sh

Доп.справка

Опция расширения dry-run покажет пригодна ли таблица для работы pg_repack
Таблица непригодна, если у нее отсутствует например первичны1 ключ
$ pg_repack --dry-run -d imdb --table имя_таблицы

Удалить расширение:
DROP EXTENSION pg_repack;

Размеры таблицы и индекса:
SELECT pg_size_pretty(pg_table_size('имя_таблицы')) ts, pg_size_pretty(pg_indexes_size('имя_таблицы')) is;

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект