Перейти к основному содержанию
Большинство запросов ALTER TABLE изменяют настройки таблицы или данные:
Большинство запросов ALTER TABLE поддерживаются только для таблиц *MergeTree, Merge и Distributed.
Эти операторы ALTER изменяют представления:
ОператорОписание
ALTER TABLE … MODIFY QUERYИзменяет структуру materialized view.
Эти операторы ALTER изменяют сущности, связанные с ролевым управлением доступом:
ОператорОписание
ALTER TABLE … MODIFY COMMENTДобавляет, изменяет или удаляет комментарии к таблице вне зависимости от того, были ли они заданы ранее.
ALTER NAMED COLLECTIONИзменяет именованные коллекции.

Мутации

Запросы ALTER, предназначенные для изменения данных в таблице, реализованы с помощью механизма под названием «мутации», в частности ALTER TABLE … DELETE и ALTER TABLE … UPDATE. Это асинхронные фоновые процессы, похожие на слияния в таблицах MergeTree, которые создают новые «мутированные» версии частей. Для таблиц *MergeTree мутации выполняются путем перезаписи частей данных целиком. Атомарности здесь нет — части заменяются мутированными, как только они готовы, и запрос SELECT, который начал выполняться во время мутации, увидит данные из уже измененных частей вместе с данными из частей, которые еще не были изменены. Мутации полностью упорядочены по порядку создания и применяются к каждой части именно в этом порядке. Кроме того, мутации частично упорядочены относительно запросов INSERT INTO: данные, вставленные в таблицу до отправки мутации, будут изменены, а данные, вставленные после этого, — нет. Обратите внимание, что мутации никак не блокируют вставки. Запрос мутации возвращает результат сразу после добавления записи о мутации (в случае реплицируемых таблиц — в ZooKeeper, для нереплицируемых таблиц — в файловую систему). Сама мутация выполняется асинхронно с использованием настроек системного профиля. Для отслеживания прогресса мутаций можно использовать таблицу system.mutations. Успешно отправленная мутация продолжит выполняться, даже если серверы ClickHouse будут перезапущены. После отправки мутацию нельзя откатить, но, если она по какой-либо причине зависла, ее можно отменить запросом KILL MUTATION. Записи о завершенных мутациях удаляются не сразу (количество сохраняемых записей определяется параметром движка хранения finished_mutations_to_keep). Более старые записи о мутациях удаляются.

Синхронность запросов ALTER

Для нереплицируемых таблиц все запросы ALTER выполняются синхронно. Для реплицируемых таблиц запрос лишь добавляет в ZooKeeper инструкции для соответствующих действий, а сами действия выполняются как можно скорее. Однако запрос может ждать завершения этих действий на всех репликах. Для запросов ALTER, создающих мутации (например, UPDATE, DELETE, MATERIALIZE INDEX, MATERIALIZE PROJECTION, MATERIALIZE COLUMN, APPLY DELETED MASK, APPLY PATCHES, CLEAR STATISTIC, MATERIALIZE STATISTIC и другие), синхронность определяется настройкой mutations_sync. Для других запросов ALTER, которые изменяют только метаданные, можно использовать настройку alter_sync, чтобы настроить ожидание. С помощью настройки replication_wait_for_inactive_replica_timeout можно указать, как долго (в секундах) ждать, пока неактивные реплики выполнят все запросы ALTER.
Для всех запросов ALTER: если alter_sync = 2 и некоторые реплики остаются неактивными дольше времени, указанного в настройке replication_wait_for_inactive_replica_timeout, генерируется исключение UNFINISHED.
Последнее изменение 10 июня 2026 г.