Операции с динамическими таблицами
Монтирование
При чтении или записи в таблицу клиент использует кеш метаданных, чтобы понять, какие таблеты при этом оказываются затронуты. Чтобы иметь возможность исполнять запросы, необходимо, чтобы соответствующие таблеты были смонтированы.
После создания таблет не смонтирован — находится в состоянии 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. При этом копия таблицы исходно будет использовать тот же набор чанков, что и исходная. По мере того как состояние этих таблиц начнет меняться, количество общих чанков начнет сокращаться при компактификации. В пределе физически потребляемое данными таблицами место на диске станет равно сумме их объемов.