В базе данных, как и в жизни, требуется небольшое обслуживание.

Очистка — важная задача обслуживания в PostgreSQL, которая помогает освободить место и повысить производительность. В этой статье мы обсудим, что такое очистка, зачем она нужна и как ее выполнять в PostgreSQL 13.

Что такое очистка в PostgreSQL?

Очистка в PostgreSQL 13 — это процесс, который помогает высвободить пространство и повысить производительность за счет удаления мертвых строк из таблиц. В PostgreSQL при удалении или обновлении строки старая версия строки не сразу удаляется из таблицы. Вместо этого он помечается как «мертвый» и остается на месте до тех пор, пока не будет выполнена вакуумная операция. Операция очистки сканирует таблицу и освобождает пространство, занимаемое этими мертвыми строками.

Когда строка удаляется или обновляется, PostgreSQL помечает старую версию строки как «мертвую», а не физически удаляет ее из таблицы. Это делается для сохранения согласованности в случае отката или сбоя. Однако по мере накопления мертвых строк таблица становится больше и ее сложнее сканировать базе данных, что может привести к снижению производительности запросов и увеличению использования дискового пространства.

Зачем нужна уборка пылесосом?

Пылесос необходим по нескольким причинам:

Производительность: по мере того, как в таблице накапливается больше мертвых строк, таблица становится больше и ее сложнее сканировать базе данных. Это может привести к снижению производительности запросов.

Пространство. Мертвые строки могут занимать много места, особенно в больших таблицах. Очистка освобождает это пространство, что может помочь предотвратить нехватку места на диске для базы данных.

Индексирование. Мертвые строки также могут влиять на производительность индексов. Очистка может помочь повысить производительность индексов за счет удаления из них мертвых строк.

В PostgreSQL существует два типа очистки

Автоочистка: это фоновый процесс, который запускается автоматически и периодически очищает таблицы. Он включен по умолчанию в PostgreSQL и настраивается с помощью параметров autovacuum_* в файле postgresql.conf.

Ручная очистка: это ручной процесс, который можно выполнить с помощью команды VACUUM. Его можно использовать для очистки определенных таблиц или всех таблиц в базе данных. Его также можно использовать для уборки стола с определенной конфигурацией, такой как уборка только свободного пространства, уборка всего стола, анализ вакуума.

Важно отметить, что очистка может быть ресурсоемкой операцией и может привести к временному снижению производительности во время ее выполнения. Поэтому, как правило, лучше планировать очистку на периоды низкой активности в базе данных, например во время периодов обслуживания или на ночь.

Как выполнить очистку в PostgreSQL 13

В этом руководстве мы рассмотрим все этапы очистки в PostgreSQL 13.

Шаг 1. Подключитесь к базе данных.

Для начала подключитесь к базе данных с помощью инструмента командной строки psql или инструмента с графическим интерфейсом, такого как pgAdmin.

Шаг 2. Проверьте статус таблицы

Перед очисткой рекомендуется проверить состояние таблицы, которую вы хотите очистить. Вы можете использовать команду \d для просмотра сведений о таблице, включая количество мертвых строк.

Шаг 3. Запустите команду VACUUM.

Чтобы очистить конкретную таблицу, вы можете использовать команду VACUUM, за которой следует имя таблицы. Например, чтобы очистить таблицу «сотрудники», вы должны выполнить следующую команду.

VACUUM employees;

Чтобы очистить все таблицы в базе данных, вы можете использовать команду VACUUM, не указывая имя таблицы.

VACUUM;

Шаг 4. Запустите команду АНАЛИЗ

После очистки рекомендуется обновить статистику таблицы с помощью команды ANALYZE. Это гарантирует, что планировщик запросов будет иметь точную информацию о таблице, что может повысить производительность запросов.

ANALYZE employees;

Шаг 5. Отслеживайте процесс очистки

Во время работы пылесоса вы можете следить за его ходом, проверяя системное представление pg_stat_progress_vacuum. В этом представлении отображается ход выполнения всех запущенных в данный момент процессов очистки.

Шаг 6. Еще раз проверьте статус таблицы

После завершения очистки рекомендуется еще раз проверить состояние таблицы с помощью команды \d. Вы должны увидеть уменьшение количества мертвых строк и увеличение объема свободного места.

Плюсы и минусы очистки в PostgreSQL

Плюсы:

Повышение производительности. Очистка может повысить производительность запросов за счет удаления мертвых строк и освобождения места.

Уменьшает использование дискового пространства. Очистка может помочь предотвратить нехватку места на диске базы данных за счет высвобождения пространства, занятого мертвыми строками.

Минусы:

Ресурсоемкий: очистка может быть ресурсоемкой операцией, особенно для больших таблиц. Это может привести к временному снижению производительности во время работы пылесоса.

Занимает много времени: очистка может занять много времени, особенно на больших таблицах.

В заключение, очистка — это необходимая задача обслуживания в PostgreSQL, которая помогает освободить место и повысить производительность. Следуя шагам, описанным в этой статье, вы сможете легко очистить таблицы в PostgreSQL 13 и обеспечить бесперебойную работу базы данных. Тем не менее, важно взвесить все «за» и «против» уборки пылесосом, прежде чем продолжить.