Дилемма Dead Row: очистка Postgres 13
Очистка — важная задача обслуживания в 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;
После очистки рекомендуется обновить статистику таблицы с помощью команды ANALYZE. Это гарантирует, что планировщик запросов будет иметь точную информацию о таблице, что может повысить производительность запросов.
ANALYZE employees;
Во время работы пылесоса вы можете следить за его ходом, проверяя системное представление pg_stat_progress_vacuum. В этом представлении отображается ход выполнения всех запущенных в данный момент процессов очистки.
Шаг 6 : Еще раз проверьте статус таблицы.
После завершения очистки рекомендуется еще раз проверить состояние таблицы с помощью команды \d. Вы должны увидеть уменьшение количества мертвых строк и увеличение объема свободного места.
Плюсы и минусы очистки в PostgreSQL
Плюсы :
Повышает производительность . Очистка может повысить производительность запросов за счет удаления мертвых строк и освобождения места.
Уменьшает использование дискового пространства : очистка может помочь предотвратить нехватку места на диске базы данных за счет высвобождения пространства, занятого мертвыми строками.
Минусы :
Ресурсоемкий : очистка может быть ресурсоемкой операцией, особенно на больших таблицах. Это может привести к временному снижению производительности во время работы пылесоса.
Отнимает много времени : уборка может занять много времени, особенно на больших столах.
В заключение, очистка — это необходимая задача обслуживания в PostgreSQL, которая помогает освободить место и повысить производительность. Следуя шагам, описанным в этой статье, вы сможете легко очистить таблицы в PostgreSQL 13 и обеспечить бесперебойную работу базы данных. Тем не менее, важно взвесить все «за» и «против» уборки пылесосом, прежде чем продолжить.

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































