Перейти к основному содержанию
Перейти к основному содержанию

Мутации обновления

Мутации обновления — это запросы ALTER, которые изменяют данные таблицы с помощью обновлений. Прежде всего это такие запросы, как ALTER TABLE UPDATE и т.п. Выполнение таких запросов приводит к созданию новых изменённых версий частей данных. Это означает, что такие запросы инициируют перезапись целых частей данных для всех строк, вставленных до мутации, что приводит к большому количеству операций записи.

Справочные материалы

Для обновлений вы можете избежать такого большого количества операций записи, используя специализированные движки таблиц, такие как ReplacingMergeTree или CollapsingMergeTree, вместо стандартного движка таблиц MergeTree.

Оператор ALTER TABLE ... UPDATE

ALTER TABLE [db.]table [ON CLUSTER cluster] ОБНОВИТЬ column1 = expr1 [, ...] [IN PARTITION partition_id] WHERE filter_expr

Выполняет операции над данными, удовлетворяющими указанному выражению фильтрации. Реализована как мутация.

:::note
Префикс ALTER TABLE делает этот синтаксис отличным от большинства других систем, поддерживающих SQL. Он призван подчеркнуть, что в отличие от аналогичных запросов в OLTP-базах данных это тяжёлая операция, не предназначенная для частого использования. :::

filter_expr должно иметь тип UInt8. Этот запрос обновляет значения указанных столбцов на значения соответствующих выражений в строках, для которых filter_expr принимает ненулевое значение. Значения приводятся к типу столбца с помощью оператора CAST. Обновление столбцов, которые используются в вычислении первичного ключа или ключа партиционирования, не поддерживается.

Один запрос может содержать несколько команд, разделённых запятыми.

Синхронность обработки запроса определяется настройкой mutations_sync. По умолчанию запрос выполняется асинхронно.

См. также