Найти в Дзене
EFSOL

Регламентные операции PostgreSQL

В каждой СУБД, есть свои регламентные операции, и часто возникают вопросы, когда их применять, как часто, какие ограничения, рассмотрим некоторые из них для PostgreSQL:

1. ANALYZE ONLY:

- Назначение: команда ANALYZE ONLY выполняет только обновление статистики таблиц без выполнения очистки пространства.

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

- Ограничения: команда ANALYZE ONLY не выполняет очистку пространства, поэтому она не поможет уменьшить размер базы данных или устранить фрагментацию. Она также может занимать время и ресурсы системы, особенно для больших баз данных.

2. VACUUM ANALYZE:

- Назначение: команда VACUUM ANALYZE выполняет очистку пространства, занятого удаленными данными, и обновление статистики таблиц.

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

- Ограничения: команда VACUUM ANALYZE может занимать значительное время и ресурсы системы, особенно для больших баз данных. Рекомендуется выполнять эту команду в нерабочее время или во время низкой активности пользователей.

3. VACUUM FULL:

- Назначение: команда VACUUM FULL выполняет полную очистку пространства, занятого удаленными данными, и перестраивает таблицы для устранения фрагментации.

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

- Ограничения: команда VACUUM FULL может занимать значительное время и ресурсы системы, особенно для больших баз данных. Рекомендуется выполнять эту команду в нерабочее время или во время низкой активности пользователей. Кроме того, она блокирует доступ к таблицам во время выполнения.

4. FREEZE:

- Назначение: команда FREEZE помечает строки в таблице как замороженные, что позволяет уменьшить объем пространства, занимаемого транзакциями.

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

- Ограничения: команда FREEZE может занимать значительное время и ресурсы системы, особенно для больших баз данных. Рекомендуется выполнять эту команду в нерабочее время или во время низкой активности пользователей. Кроме того, она блокирует доступ к таблицам во время выполнения.

Применительно к 1С рекомендации по выполнению:

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

ANALYZE ONLY, обычно выполняется каждый день, в ночное время

VACUUM ANALYZE + FREEZE, выполняются, еженедельно

Про FREEZE, стоит сказать отдельно, проведение этой процедуры освобождает VACUUM от огромного количества неэффективных чтений таблиц.

VACUUM FULL используется, в случае удаления значимого объёма данных из базы (более 20%) для конкретной таблицы, из которой были удалены данные. Эта операция требует монопольного доступа, поэтому необходимо её проводить при блокировании базы 1С на сервере 1С.