Операции с динамическими таблицами

Монтирование

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

После создания таблет не смонтирован — находится в состоянии unmounted. Чтобы смонтировать таблет, следует использовать команду mount-table. Состояние задействованных таблетов сменится с unmounted на mounting, а затем на mounted.

При монтировании таблета система YTsaurus выбирает таблет-селл, который будет обслуживать данный таблет. Такой селл можно указать самостоятельно в аргументах команды mount-table или доверить выбор системе. В текущей реализации система выбирает случайный селл, находящийся в рабочем состоянии, но в будущих версиях возможны улучшения алгоритма и более точная балансировка с учётом нагрузки.

Отмонтировать таблет можно командой unmount-table. Таблет перейдет в состояние unmounting, а затем в unmounted. Размонтированный таблет не может обслуживать запросы ни на запись, ни на чтение. Чтобы решардировать таблеты, нужно предварительно отмонтировать их.

Чтобы отмонтировать таблет:

  • дождитесь окончания всех пишущих транзакций и не разрешайте новые;
  • дождитесь записи всех данных из памяти dynamic_store в чанки chunk_store.

Отмонтирование может занять определенное время.

Можно выполнить принудительное отмонтирование (опция force), которое работает мгновенно, но может привести к потере данных и зависанию некоторых двухфазных коммитов.

Заморозка

Помимо команд mount_table и unmount_table в системе YTsaurus существуют близкие аналоги: команды freeze_table и unfreeze_table.

Команда freeze_table переводит таблеты таблицы — все или часть — в специальное «замороженное» состояние frozen. Из таких таблетов можно читать данные, но в них нельзя записывать.

Команда unfreeze_table возвращает «замороженные» таблеты обратно в обычное смонтированное состояние mounted.

Переход из mounted во frozen помимо блокирования записи также вызывает запись всех накопленных в памяти данных в виде чанков на диск. Данный процесс не мгновенный и может занять минуты. В процессе записи данных на диск состояние таблета будет равно freezing.

Заморозка динамической таблицы полезна для создания её копии, при этом таблица остаётся доступна для чтения.

Копирование динамических таблиц

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