> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Системная таблица, содержащая информацию о мутациях в таблицах MergeTree и ходе их выполнения. Каждая команда мутации представлена одной строкой.

# system.mutations

<div id="description">
  ## Описание
</div>

Таблица содержит информацию о [Мутациях](/ru/reference/statements/alter/index#mutations) таблиц [MergeTree](/ru/reference/engines/table-engines/mergetree-family/mergetree) и ходе их выполнения. Каждой команде мутации соответствует одна строка.

<div id="columns">
  ## Столбцы:
</div>

* `database` ([String](/ru/reference/data-types/index)) — Имя базы данных, к которой была применена мутация.
* `table` ([String](/ru/reference/data-types/index)) — Имя таблицы, к которой была применена мутация.
* `mutation_id` ([String](/ru/reference/data-types/index)) — Идентификатор мутации. Для реплицируемых таблиц эти идентификаторы соответствуют именам znode в каталоге `<table_path_in_clickhouse_keeper>/mutations/` в ClickHouse Keeper. Для нереплицируемых таблиц идентификаторы соответствуют именам файлов в каталоге данных таблицы.
* `command` ([String](/ru/reference/data-types/index)) — Строка команды мутации (часть запроса после ALTER TABLE \[db.]table).
* `create_time` ([DateTime](/ru/reference/data-types/index)) — Дата и время, когда команда мутации была отправлена на выполнение.
* `block_numbers.partition_id` ([Array(String)](/ru/reference/data-types/index)) — Для мутаций реплицируемых таблиц массив содержит идентификаторы партиций (по одной записи для каждой партиции). Для мутаций нереплицируемых таблиц массив пуст.
* `block_numbers.number` ([Array(Int64)](/ru/reference/data-types/index)) — Для мутаций реплицируемых таблиц массив содержит по одной записи для каждой партиции с номером блока, назначенным мутации. В партиции будут мутированы только те части данных, которые содержат блоки с номерами меньше этого числа. В нереплицируемых таблицах номера блоков во всех партициях образуют единую последовательность. Это означает, что для мутаций нереплицируемых таблиц столбец будет содержать одну запись с одним номером блока, назначенным мутации.
* `parts_in_progress_names` ([Array(String)](/ru/reference/data-types/index)) — Массив имен частей данных, которые сейчас мутируются.
* `parts_to_do_names` ([Array(String)](/ru/reference/data-types/index)) — Массив имен частей данных, которые необходимо мутировать для завершения мутации.
* `parts_to_do` ([Int64](/ru/reference/data-types/index)) — Количество частей данных, которые необходимо мутировать для завершения мутации. Примечание: даже если `parts_to_do` = 0, мутация реплицируемой таблицы может быть еще не завершена из-за длительно выполняющегося INSERT, который создает новую часть данных, которую потребуется мутировать.
* `parts_postpone_reasons` ([Map(String, String)](/ru/reference/data-types/index)) — Сопоставление имен частей данных с причинами, по которым их обработка отложена.
* `is_done` ([UInt8](/ru/reference/data-types/index)) — Флаг, указывающий, завершена мутация или нет. Возможные значения: 1, если мутация завершена, 0, если мутация все еще выполняется.
* `is_killed` ([UInt8](/ru/reference/data-types/index)) — Указывает, была ли принудительно остановлена мутация. Доступно только в ClickHouse Cloud. Примечание: is\_killed=1 не обязательно означает, что мутация полностью завершена. Мутация может оставаться в состоянии, когда is\_killed=1 и is\_done=0, в течение длительного времени. Это может происходить, если другая длительно выполняющаяся мутация блокирует остановленную мутацию. Это нормальная ситуация.
* `latest_failed_part` ([String](/ru/reference/data-types/index)) — Имя последней части данных, которую не удалось мутировать.
* `latest_fail_time` ([DateTime](/ru/reference/data-types/index)) — Дата и время последнего сбоя мутации части данных.
* `latest_fail_reason` ([String](/ru/reference/data-types/index)) — Сообщение исключения, вызвавшего последний сбой мутации части данных.
* `latest_fail_error_code_name` ([String](/ru/reference/data-types/index)) — Код ошибки исключения, вызвавшего последний сбой мутации части данных.

<Note>
  - Если имя части данных отсутствует в `parts_postpone_reasons` и она ещё не подвергалась мутации, это означает, что эта часть данных пока не запланирована для мутации.
  - Имя части данных `all_parts` обозначает все части данных, которые ещё не подвергались мутации.
</Note>

* `is_killed` ([UInt8](/ru/reference/data-types/int-uint)) — Указывает, была ли мутация принудительно остановлена. **Доступно только в ClickHouse Cloud.**

<Note>
  `is_killed=1` не обязательно означает, что мутация полностью завершена. Мутация может в течение длительного времени оставаться в состоянии, когда `is_killed=1`, а `is_done=0`. Это может происходить, если остановленную мутацию блокирует другая длительно выполняющаяся мутация. Это нормальная ситуация.
</Note>

* `is_done` ([UInt8](/ru/reference/data-types/int-uint)) — Флаг, указывающий, завершена мутация или нет. Возможные значения:
  * `1`, если мутация завершена,
  * `0`, если мутация всё ещё выполняется.

<Note>
  Даже если `parts_to_do = 0`, мутация реплицируемой таблицы может быть ещё не завершена из-за длительно выполняющегося запроса `INSERT`, который создаст новую часть данных, к которой нужно будет применить мутацию.
</Note>

Если при мутации некоторых частей данных возникли проблемы, следующие столбцы содержат дополнительную информацию:

* `latest_failed_part` ([String](/ru/reference/data-types/string)) — Имя последней части данных, для которой не удалось выполнить мутацию.
* `latest_fail_time` ([DateTime](/ru/reference/data-types/datetime)) — Дата и время последнего сбоя мутации части данных.
* `latest_fail_reason` ([String](/ru/reference/data-types/string)) — Сообщение об исключении, вызвавшем последний сбой мутации части данных.

<div id="monitoring-mutations">
  ## Мониторинг мутаций
</div>

Чтобы отслеживать ход выполнения в таблице `system.mutations`, используйте следующий запрос:

```sql theme={null}
SELECT * FROM clusterAllReplicas('cluster_name', 'system', 'mutations')
WHERE is_done = 0 AND table = 'tmp';

-- или

SELECT * FROM clusterAllReplicas('cluster_name', 'system.mutations')
WHERE is_done = 0 AND table = 'tmp';
```

Примечание: для этого требуются разрешения на чтение таблиц `system.*`.

<Tip>
  **Использование в Cloud**

  В ClickHouse Cloud таблица `system.mutations` на каждом узле содержит все мутации кластера, поэтому `clusterAllReplicas` не требуется.
</Tip>

<div id="see-also">
  ## См. также
</div>

* [Мутации](/ru/reference/statements/alter/index#mutations)
* [MergeTree](/ru/reference/engines/table-engines/mergetree-family/mergetree) — движок таблицы
* семейство [ReplicatedMergeTree](/ru/reference/engines/table-engines/mergetree-family/replication)
