Запуск принудительного компакшена таблицы

ALTER TABLE table_name COMPACT [WITH (key = value [, ...])];

Важно

Поддерживается только для строковых таблиц.

YDB автоматически производит компакшен таблиц и обычно не требует ручного вмешательства.
Однако, при помощи команды ALTER TABLE ... COMPACT можно явно запустить компакшен данных заданной таблицы, не дожидаясь автоматического уплотнения. Команда полезна, например, в следующих сценариях:

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

Команда создаёт фоновую операцию и синхронно ждёт её завершения. Ожидание можно прервать, тогда операция продолжит выполняться в фоне. Управлять фоновыми операциями компакшена можно через CLI и Embedded UI.

Параметры

В блоке WITH можно указать следующие параметры:

  • CASCADE — компактить ли вместе с таблицей её вторичные индексы. Допустимые значения: TRUE и FALSE. Значение по умолчанию — FALSE (компактится только сама таблица).
  • PARALLEL — максимальное число партиций, которые могут одновременно компактиться в рамках этой операции. Допустимые значения — положительные целые числа. Значение по умолчанию — 1. Общий лимит на одновременно работающие ручные компакшены для всей базы задаётся отдельно в конфигурации кластера YDB.

Поведение

  • За ходом запущенных операций компакшена можно следить с помощью CLI-команды ydb operation list compaction. С помощью соответствующих команд можно получить статус конкретной операции, отменить операцию или удалить запись завершённой операции.
  • Также просматривать операции и управлять ими можно с помощью Embedded UI. Для этого нужно перейти на страницу базы данных, открыть вкладку Operations и выбрать на ней тип операции Compaction.
  • Если для той же таблицы (либо для одного из её вторичных индексов при CASCADE = TRUE) уже выполняется операция компакшена, запуск завершится с ошибкой. Нужно либо дождаться завершения предыдущей операции, либо отменить её.
  • Для запуска команды требуются те же права, что и для остальных действий ALTER TABLE. Параллельные изменения схемы таблицы при этом не блокируются.
  • Принудительный компакшен также материализует заимствованные данные. В результате общий объём данных в базе может увеличиться. Механизм заимствования используется, например, для реализации CoW копирования таблиц, поэтому при выполнении компакшена скопированных таблиц их объём в пределе может увеличиться на размер исходной таблицы.

Примеры

Запустить компакшен только основной таблицы:

ALTER TABLE series COMPACT;

Запустить компакшен таблицы вместе со всеми её вторичными индексами:

ALTER TABLE series COMPACT WITH (CASCADE = TRUE);

Запустить компакшен только impl-таблицы конкретного вторичного индекса:

ALTER TABLE `series/idx_release/indexImplTable` COMPACT;

Запустить компакшен таблицы, установив число одновременно обрабатываемых партиций:

ALTER TABLE series COMPACT WITH (PARALLEL = 5);
Предыдущая
Следующая