Запуск принудительного компакшена таблицы
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);