Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»
Yandex MPP Analytics for PostgreSQL
  • Начало работы
    • Обзор СУБД Greenplum® и сервиса Yandex MPP Analytics for PostgreSQL
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
    • Расчет конфигурации кластера
    • Сеть в Yandex MPP Analytics for PostgreSQL
    • Квоты и лимиты
    • Резервные копии
    • Ресурсные группы
    • Шардирование
    • Пользователи и роли
    • Аутентификация пользователей
    • Командный центр
    • Параметры командного центра
    • Внешние таблицы
    • Управление соединениями
    • Расширение кластера
    • Техническое обслуживание
    • Очистка таблиц и системного каталога
    • Настройки Greenplum®
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Обучающие курсы

В этой статье:

  • Очистка таблиц
  • Информация о незамороженных XID
  • Очистка таблиц AO и AOCO
  • Очистка таблиц Yezzey
  • Очистка системного каталога
  • Мониторинг состояния таблиц и индексов
  • Автоматическая очистка
  • Самостоятельное планирование и проведение очистки
  1. Концепции
  2. Очистка таблиц и системного каталога

Очистка таблиц и системного каталога в Yandex MPP Analytics for PostgreSQL

Статья создана
Yandex Cloud
Обновлена 2 марта 2026 г.
  • Очистка таблиц
    • Информация о незамороженных XID
    • Очистка таблиц AO и AOCO
    • Очистка таблиц Yezzey
  • Очистка системного каталога
  • Мониторинг состояния таблиц и индексов
  • Автоматическая очистка
  • Самостоятельное планирование и проведение очистки

В Yandex MPP Analytics for PostgreSQL очистка пользовательских таблиц и системного каталога выполняется автоматически в фоновом режиме. Если автоматическая очистка оказывается недостаточной, может потребоваться самостоятельное проведение очистки.

Очистка таблицОчистка таблиц

При записи транзакции в базу данных ей присваивается уникальный идентификатор XID (32-битный счетчик). По нему база данных определяет, какая транзакция началась раньше, а какая позже, и какие изменения видны текущей транзакции. Когда значение XID переполняется, счетчик сбрасывается, и отсчет транзакций начинается снова (механизм wraparound).

При выполнении операций обновления (UPDATE) и удаления (DELETE) старые версии строк помечаются как «мертвые» (dead tuples), но физически не удаляются из таблицы, чтобы транзакции, которые начались раньше, могли их видеть. В результате таблицы начинают занимать больше места на диске, и запросы к базе данных выполняются медленнее из-за увеличения объема обрабатываемых данных.

Для освобождения пространства, занятого «мертвыми» строками, используются команды VACUUM и VACUUM FULL. Эти команды также замораживают (frozen) XID в строках, созданных завершенными транзакциями. Это необходимо, чтобы строки оставались видимыми, даже если XID переполнится и идентификаторы завершенных транзакций будут использоваться для новых транзакций.

В Greenplum® по умолчанию используются heap-таблицы — стандартный тип таблиц PostgreSQL. Для них команды VACUUM и VACUUM FULL работают следующим образом:

  • VACUUM помечает удаленные и устаревшие строки в таблице и ее индексах как свободное пространство для повторного использования. При этом физический размер таблицы на диске не уменьшается.
  • VACUUM FULL создает новую таблицу и копирует в нее строки, исключая удаленные и устаревшие, а также создает новые индексы для таблицы. Затем новая таблица заменяет исходную. VACUUM FULL уменьшает физический размер таблицы на диске и очищает индексы от устаревших строк. На время выполнения операции требуется блокировка ACCESS EXCLUSIVE.

Совет

VACUUM FULL блокирует работу с таблицей и требует дополнительного места на диске для создания временной таблицы, поэтому использовать эту операцию часто не рекомендуется. Чтобы избежать блокировки, можно создать новую таблицу, содержащую актуальные строки, с помощью CREATE TABLE ... AS, а затем удалить исходную таблицу.

Подробнее об операции очистки в PostgreSQL.

Информация о незамороженных XIDИнформация о незамороженных XID

В PostgreSQL информация о незамороженных XID хранится в таблицах pg_class и pg_database:

  • Самый старый незамороженный XID для каждой таблицы — в столбце relfrozenxid таблицы pg_class.
  • Самый старый незамороженный XID для каждой базы данных — в столбце datfrozenxid таблицы pg_database.

Показатели обновляются после выполнения VACUUM или VACUUM FULL.

Подробнее о wraparound в PostgreSQL.

Очистка таблиц AO и AOCOОчистка таблиц AO и AOCO

Таблицы AO и AOCO — таблицы, оптимизированные для добавления. Данные в них хранятся в сегментных файлах, которые состоят из блоков. Новые строки добавляются в конец сегментных файлов, а старые помечаются как «мертвые» и не переписываются.

Для таблиц AO и AOCO команды VACUUM и VACUUM FULL работают следующим образом:

  • VACUUM создает новый файл для каждого сегмента и переносит в него видимые строки. При этом количество блоков на диске не меняется. На время удаления старого файла и активации нового таблица блокируется.
  • VACUUM FULL создает новый файл для каждого сегмента и переносит в него видимые строки, перераспределяя их между блоками. Это приводит к уменьшению количества блоков на диске. На время выполнения операции таблица блокируется.

Подробнее об операции очистки для таблиц AO и AOCO.

Очистка таблиц YezzeyОчистка таблиц Yezzey

Yezzey — это расширение Greenplum®, которое позволяет хранить таблицы AO и AOCO в гибридном хранилище.

Для таблиц AO и AOCO в гибридном хранилище операции VACUUM и VACUUM FULL выполняются так же, как и для подобных таблиц в хранилище кластера.

Очистка системного каталогаОчистка системного каталога

В Greenplum® системный каталог — это набор системных таблиц в схеме pg_catalog. Системные таблицы хранят метаданные о таблицах, столбцах и других объектах базы данных. Со временем они раздуваются из-за создания и удаления DDL-объектов, особенно при массовой загрузке данных (например, с помощью Managed Service for Apache Airflow™). Поэтому для системного каталога также необходимо выполнять операции VACUUM и VACUUM FULL.

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

Важно

Прерывание операции VACUUM FULL может повредить каталог на сегменте.

Мониторинг состояния таблиц и индексовМониторинг состояния таблиц и индексов

Получить информацию о статистике bloat системного каталога и статистике очистки пользовательских таблиц можно в консоли управления на вкладке Мониторинг страницы управления кластером или в сервисе Yandex Monitoring, на графиках в блоке Background activities.

Подробнее о мониторинге состояния кластера Yandex MPP Analytics for PostgreSQL.

Автоматическая очисткаАвтоматическая очистка

В Yandex MPP Analytics for PostgreSQL очистка (VACUUM) пользовательских таблиц и системного каталога выполняется автоматически в фоновом режиме. Однако рекомендуется отслеживать состояние таблиц и индексов с помощью графиков bloat и выполнять очистку самостоятельно, если автоматическая очистка оказывается недостаточной и таблицы раздуваются.

Подробнее об автоматической очистке.

Самостоятельное планирование и проведение очисткиСамостоятельное планирование и проведение очистки

Операции VACUUM и VACUUM FULL для таблиц AO и AOCO, а также VACUUM FULL для heap-таблиц требуют эксклюзивной блокировки таблицы (ACCESS EXCLUSIVE). Если в базе данных есть незавершенные транзакции, блокирующие таблицу, возникает конфликт блокировок. Это временно приостанавливает операции с таблицей и с системным каталогом.

Чтобы избежать сбоев, соблюдайте следующие рекомендации:

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

Была ли статья полезна?

Предыдущая
Техническое обслуживание
Следующая
Настройки Greenplum®
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»