# Системные таблицы Системные таблицы используются для реализации части функциональности системы, а также предоставляют доступ к информации о работе системы. Вы не можете удалить системную таблицу (хотя можете сделать DETACH). Для системных таблиц нет файлов с данными на диске и файлов с метаданными. Сервер создаёт все системные таблицы при старте. В системные таблицы нельзя записывать данные - можно только читать. Системные таблицы расположены в базе данных system. ## system.asynchronous_metrics {#system_tables-asynchronous_metrics} Содержат метрики, используемые для профилирования и мониторинга. Обычно отражают количество событий, происходящих в данный момент в системе, или ресурсов, суммарно потребляемых системой. Пример: количество запросов типа SELECT, исполняемых в текущий момент; количество потребляемой памяти. `system.asynchronous_metrics` и `system.metrics` отличаются набором и способом вычисления метрик. ## system.clusters Содержит информацию о доступных в конфигурационном файле кластерах и серверах, которые в них входят. Столбцы: ``` cluster String - имя кластера shard_num UInt32 - номер шарда в кластере, начиная с 1 shard_weight UInt32 - относительный вес шарда при записи данных replica_num UInt32 - номер реплики в шарде, начиная с 1 host_name String - имя хоста, как прописано в конфиге host_address String - IP-адрес хоста, полученный из DNS port UInt16 - порт, на который обращаться для соединения с сервером user String - имя пользователя, которого использовать для соединения с сервером ``` ## system.columns Содержит информацию о столбцах всех таблиц. С помощью этой таблицы можно получить информацию аналогично запросу `DESCRIBE TABLE`, но для многих таблиц сразу. ``` database String - имя базы данных, в которой находится таблица table String - имя таблицы name String - имя столбца type String - тип столбца default_type String - тип (DEFAULT, MATERIALIZED, ALIAS) выражения для значения по умолчанию, или пустая строка, если оно не описано default_expression String - выражение для значения по умолчанию, или пустая строка, если оно не описано ``` ## system.databases Таблица содержит один столбец name типа String - имя базы данных. Для каждой базы данных, о которой знает сервер, будет присутствовать соответствующая запись в таблице. Эта системная таблица используется для реализации запроса `SHOW DATABASES`. ## system.dictionaries Содержит информацию о внешних словарях. Столбцы: - `name String` — Имя словаря. - `type String` — Тип словаря: Flat, Hashed, Cache. - `origin String` — Путь к конфигурационному файлу, в котором описан словарь. - `attribute.names Array(String)` — Массив имён атрибутов, предоставляемых словарём. - `attribute.types Array(String)` — Соответствующий массив типов атрибутов, предоставляемых словарём. - `has_hierarchy UInt8` — Является ли словарь иерархическим. - `bytes_allocated UInt64` — Количество оперативной памяти, которое использует словарь. - `hit_rate Float64` — Для cache-словарей - доля использований, для которых значение было в кэше. - `element_count UInt64` — Количество хранящихся в словаре элементов. - `load_factor Float64` — Доля заполненности словаря (для hashed словаря - доля заполнения хэш-таблицы). - `creation_time DateTime` — Время создания или последней успешной перезагрузки словаря. - `last_exception String` — Текст ошибки, возникшей при создании или перезагрузке словаря, если словарь не удалось создать. - `source String` - Текст, описывающий источник данных для словаря. Заметим, что количество оперативной памяти, которое использует словарь, не является пропорциональным количеству элементов, хранящихся в словаре. Так, для flat и cached словарей, все ячейки памяти выделяются заранее, независимо от реальной заполненности словаря. ## system.events {#system_tables-events} Содержит информацию о количестве произошедших в системе событий, для профилирования и мониторинга. Пример: количество обработанных запросов типа SELECT. Столбцы: event String - имя события, value UInt64 - количество. ## system.functions Содержит информацию об обычных и агрегатных функциях. Столбцы: - `name` (`String`) – Имя функции. - `is_aggregate` (`UInt8`) – Признак, является ли функция агрегатной. ## system.graphite_retentions Содержит информацию о том, какие параметры [graphite_rollup](server_settings/settings.md#server_settings-graphite_rollup) используются в таблицах с движками [\*GraphiteMergeTree](table_engines/graphitemergetree.md). Столбцы: - `config_name` (String) - Имя параметра, используемого для `graphite_rollup`. - `regexp` (String) - Шаблон имени метрики. - `function` (String) - Имя агрегирующей функции. - `age` (UInt64) - Минимальный возраст данных в секундах. - `precision` (UInt64) - Точность определения возраста данных в секундах. - `priority` (UInt16) - Приоритет раздела pattern. - `is_default` (UInt8) - Является ли раздел pattern дефолтным. - `Tables.database` (Array(String)) - Массив имён баз данных таблиц, использующих параметр `config_name`. - `Tables.table` (Array(String)) - Массив имён таблиц, использующих параметр `config_name`. ## system.merges Содержит информацию о производящихся прямо сейчас слияниях и мутациях кусков для таблиц семейства MergeTree. Столбцы: - `database String` — Имя базы данных, в которой находится таблица. - `table String` — Имя таблицы. - `elapsed Float64` — Время в секундах, прошедшее от начала выполнения слияния. - `progress Float64` — Доля выполненной работы от 0 до 1. - `num_parts UInt64` — Количество сливаемых кусков. - `result_part_name String` — Имя куска, который будет образован в результате слияния. - `is_mutation UInt8` - Является ли данный процесс мутацией куска. - `total_size_bytes_compressed UInt64` — Суммарный размер сжатых данных сливаемых кусков. - `total_size_marks UInt64` — Суммарное количество засечек в сливаемых кусках. - `bytes_read_uncompressed UInt64` — Количество прочитанных байт, разжатых. - `rows_read UInt64` — Количество прочитанных строк. - `bytes_written_uncompressed UInt64` — Количество записанных байт, несжатых. - `rows_written UInt64` — Количество записанных строк. ## system.metrics {#system_tables-metrics} ## system.numbers Таблица содержит один столбец с именем number типа UInt64, содержащим почти все натуральные числа, начиная с нуля. Эту таблицу можно использовать для тестов, а также если вам нужно сделать перебор. Чтения из этой таблицы не распараллеливаются. ## system.numbers_mt То же самое, что и system.numbers, но чтение распараллеливается. Числа могут возвращаться в произвольном порядке. Используется для тестов. ## system.one Таблица содержит одну строку с одним столбцом dummy типа UInt8, содержащим значение 0. Эта таблица используется, если в SELECT запросе не указана секция FROM. То есть, это - аналог таблицы DUAL, которую можно найти в других СУБД. ## system.parts {#system_tables-parts} Содержит информацию о кусках таблиц семейства [MergeTree](table_engines/mergetree.md). Каждая строка описывает один кусок данных. Столбцы: - partition (String) - Имя партиции. Что такое партиция можно узнать из описания запроса [ALTER](../query_language/alter.md#query_language_queries_alter). Форматы: - `YYYYMM` для автоматической схемы партиционирования по месяцам. - `any_string` при партиционировании вручную. - `name` (String) - имя куска; - `active` (UInt8) - признак активности. Если кусок активен, то он используется таблицей, в противном случает он будет удален. Неактивные куски остаются после слияний; - `marks` (UInt64) - количество засечек. Чтобы получить примерное количество строк в куске, умножьте `marks` на гранулированность индекса (обычно 8192); - `marks_size` (UInt64) - размер файла с засечками; - `rows` (UInt64) - количество строк; - `bytes` (UInt64) - количество байт в сжатом виде; - `modification_time` (DateTime) - время модификации директории с куском. Обычно соответствует времени создания куска; - `remove_time` (DateTime) - время, когда кусок стал неактивным; - `refcount` (UInt32) - количество мест, в котором кусок используется. Значение больше 2 говорит о том, что кусок участвует в запросах или в слияниях; - `min_date` (Date) - минимальное значение ключа даты в куске; - `max_date` (Date) - максимальное значение ключа даты в куске; - `min_block_number` (UInt64) - минимальное число кусков, из которых состоит текущий после слияния; - `max_block_number` (UInt64) - максимальное число кусков, из которых состоит текущий после слияния; - `level` (UInt32) - глубина дерева слияний. Если слияний не было, то `level=0`; - `primary_key_bytes_in_memory` (UInt64) - объем памяти (в байтах), занимаемой значениями первичных ключей; - `primary_key_bytes_in_memory_allocated` (UInt64) - выделенный с резервом объем памяти (в байтах) для размещения первичных ключей; - `database (String)` - имя базы данных; - `table (String)` - имя таблицы; - `engine (String)` - имя движка таблицы, без параметров. ## system.part_log {#system_tables-part-log} Системная таблица `system.part_log` создается только в том случае, если задана серверная настройка [part_log](server_settings/settings.md#server_settings-part-log). Содержит информацию о всех событиях, произошедших с [кусками данных](table_engines/custom_partitioning_key.md) таблиц семейства [MergeTree](table_engines/mergetree.md) (например, события добавления, удаления или слияния данных). Столбцы: - `event_type` (Enum) — тип события. Столбец может содержать одно из следующих значений: `NEW_PART` — вставка нового куска; `MERGE_PARTS` — слияние кусков; `DOWNLOAD_PART` — загрузка с реплики; `REMOVE_PART` — удаление или отсоединение из таблицы с помощью [DETACH PARTITION](../query_language/alter.md#alter_detach-partition); `MUTATE_PART` — изменение куска. - `event_date` (Date) — дата события; - `event_time` (DateTime) — время события; - `duration_ms` (UInt64) — длительность; - `database` (String) — имя базы данных, в которой находится кусок; - `table` (String) — имя таблицы, в которой находится кусок; - `part_name` (String) — имя куска; - `partition_id` (String) — идентификатор партиции, в которую был добавлен кусок. В столбце будет значение 'all', если таблица партициируется по выражению `tuple()`; - `rows` (UInt64) — число строк в куске; - `size_in_bytes` (UInt64) — размер куска данных в байтах; - `merged_from` (Array(String)) — массив имён кусков, из которых образован текущий кусок в результате слияния (также столбец заполняется в случае скачивания уже смерженного куска); - `bytes_uncompressed` (UInt64) — количество прочитанных разжатых байт; - `read_rows` (UInt64) — сколько было прочитано строк при слиянии кусков; - `read_bytes` (UInt64) — сколько было прочитано байт при слиянии кусков; - `error` (UInt16) — код ошибки, возникшей при текущем событии; - `exception` (String) — текст ошибки. Системная таблица `system.part_log` будет создана после первой вставки данных в таблицу `MergeTree`. ## system.processes Эта системная таблица используется для реализации запроса `SHOW PROCESSLIST`. Столбцы: ``` user String - имя пользователя, который задал запрос. При распределённой обработке запроса, относится к пользователю, с помощью которого сервер-инициатор запроса отправил запрос на данный сервер, а не к имени пользователя, который задал распределённый запрос на сервер-инициатор запроса. address String - IP-адрес, с которого задан запрос. При распределённой обработке запроса, аналогично. elapsed Float64 - время в секундах, прошедшее от начала выполнения запроса. rows_read UInt64 - количество прочитанных из таблиц строк. При распределённой обработке запроса, на сервере-инициаторе запроса, представляет собой сумму по всем удалённым серверам. bytes_read UInt64 - количество прочитанных из таблиц байт, в несжатом виде. При распределённой обработке запроса, на сервере-инициаторе запроса, представляет собой сумму по всем удалённым серверам. total_rows_approx UInt64 - приблизительная оценка общего количества строк, которые должны быть прочитаны. При распределённой обработке запроса, на сервере-инициаторе запроса, представляет собой сумму по всем удалённым серверам. Может обновляться в процессе выполнения запроса, когда становятся известны новые источники для обработки. memory_usage UInt64 - потребление памяти запросом. Может не учитывать некоторые виды выделенной памяти. query String - текст запроса. В случае INSERT - без данных для INSERT-а. query_id String - идентификатор запроса, если был задан. ``` ## system.query_log {#system_tables-query-log} Содержит логи выполняемых запросов — дату запуска, длительность выполнения, текст возникших ошибок и другую информацию. !!! note "Внимание" Таблица не содержит данные, передаваемые в запросах `INSERT`. Таблица `system.query_log` создаётся только в том случае, если задана серверная настройка [query_log](server_settings/settings.md#server_settings-query-log). Эта настройка определяет правила логирования. Например, с какой периодичностью логи будут записываться в таблицу. Также в этой настройке можно изменить название таблицы. Чтобы включить логирование запросов, необходимо установить параметр [log_queries](settings/settings.md#settings-log-queries) в 1. Подробнее см. в разделе [Настройки](settings/settings.md). Логируются следующие запросы: 1. Запросы, которые были вызваны непосредственно клиентом. 2. Дочерние запросы, которые были вызваны другими запросами (при распределенном выполнении запросов). Для дочерних запросов, информация о родительских запросах содержится в столбцах `initial_*`. Столбцы: - `type` (UInt8) — тип события, которое возникло при выполнении запроса. Возможные значения: - 1 — запуск запроса произошел успешно; - 2 — запрос выполнен успешно; - 3 — при выполнении запроса возникла ошибка; - 4 — перед запуском запроса возникла ошибка. - `event_date` (Date) — дата возникновения события; - `event_time` (DateTime) — время возникновения события; - `query_start_time` (DateTime) — время запуска запроса; - `query_duration_ms` (UInt64) — длительность выполнения запроса; - `read_rows` (UInt64) — количество прочитанных строк; - `read_bytes` (UInt64) — количество прочитанных байт; - `written_rows` (UInt64) — количество записанных строк, для запросов `INSERT`. Для остальных запросов столбец принимает значение 0. - `written_bytes` (UInt64) — количество записанных байт, для запросов `INSERT`. Для остальных запросов столбец принимает значение 0. - `result_rows` (UInt64) — количество строк, выведенных в результате; - `result_bytes` (UInt64) — количество байт, выведенных в результате; - `memory_usage` (FixedString(16)) — потребление памяти запросом; - `query` (String) — строка запроса; - `exception` (String) — сообщение об ошибке; - `stack_trace` (String) — стектрейс (список методов, которые были вызваны до возникновения ошибки). Пустая строка, если запрос завершился успешно; - `is_initial_query` (UInt8) — тип запроса: - 1 — запрос был запущен клиентом; - 0 — запрос был вызван другим запросом (при распределенном выполнении запросов); - `user` (String) — имя пользователя, запустившего запрос; - `query_id` (String) — идентификатор запроса; - `address` (FixedString(16)) — имя хоста, с которого был отправлен запрос; - `port` (UInt16) — порт удалённого сервера, принимающего запрос; - `initial_user` (String) — имя пользователя, вызвавшего родительский запрос (для распределенного выполнения запросов); - `initial_query_id` (String) — идентификатор родительского запроса, породившего исходный запрос; - `initial_address` (FixedString(16)) — имя хоста, с которого был вызван родительский запрос; - `initial_port` (UInt16) — порт удалённого сервера, принимающего родительский запрос; - `interface` (UInt8) — используемый интерфейс. Возможные значения: - 1 — TCP. - 2 — HTTP. - `os_user` (String) — операционная система на клиенте; - `client_hostname` (String) — имя хоста, к которому подключен клиент [clickhouse-client](../interfaces/cli.md); - `client_name` (String) — имя клиента [clickhouse-client](../interfaces/cli.md); - `client_revision` (UInt32) — ревизия [clickhouse-client](../interfaces/cli.md); - `client_version_major` (UInt32) — мажорная версия [clickhouse-client](../interfaces/cli.md); - `client_version_minor` (UInt32) — минорная версия [clickhouse-client](../interfaces/cli.md); - `client_version_patch` (UInt32) — patch-компонент версии [clickhouse-client](../interfaces/cli.md); - `http_method` (UInt8) — используемый HTTP-метод. Возможные значения: - 0 — запрос был вызван из TCP интерфейса; - 1 — метод `GET`; - 2 — метод `POST`. - `http_user_agent` (String) — содержимое заголовка `UserAgent`; - `quota_key` (String) — ключ квоты, заданный в настройке [quotas](quotas.md); - `revision` (UInt32) — ревизия сервера ClickHouse; - `thread_numbers` (Array(UInt32)) — номера потоков, участвующих в выполнении запроса; - `ProfileEvents.Names` (Array(String)) — счётчики, измеряющие метрики: - время, потраченное на чтение и запись по сети; - чтение и запись на диск; - количество сетевых ошибок; - время, затраченное на ожидание, при ограниченной пропускной способности сети. - `ProfileEvents.Values` (Array(UInt64)) — значения счётчиков, перечисленных в `ProfileEvents.Names`. - `Settings.Names` (Array(String)) — настройки, которые были изменены при выполнении запроса. Чтобы включить отслеживание изменений настроек, установите параметр `log_query_settings` в 1. - `Settings.Values` (Array(String)) — значения настроек, перечисленных в `Settings.Names`. Каждый запрос создаёт в таблице `query_log` одно или два события, в зависимости от состояния этого запроса: 1. При успешном выполнении запроса, в таблице создаётся два события с типами 1 и 2 (см. столбец `type`). 2. Если в ходе выполнения запроса возникла ошибка, в таблице создаётся два события с типами 1 и 4. 3. Если ошибка возникла до начала выполнения запроса, создаётся одно событие с типом 3. По умолчанию, логи записываются в таблицу с периодичностью в 7,5 секунд. Частоту записи логов можно регулировать настройкой [query_log](server_settings/settings.md#server_settings-query-log) (см. параметр `flush_interval_milliseconds`). Чтобы принудительно пробросить логи из буфера памяти в таблицу, используйте запрос `SYSTEM FLUSH LOGS`. При ручном удалении таблицы, она будет повторно создана на лету. Логи, которые содержались в таблице до её удаления, не сохраняются. !!! note "Примечание" Срок хранения логов в таблице неограничен — они не удаляются автоматически. Об удалении неактуальных логов вам нужно позаботиться самостоятельно. Вы можете задать произвольный ключ партиционирования для таблицы `system.query_log`, в настройке [query_log](server_settings/settings.md#server_settings-query-log) (см. параметр `partition_by`). ## system.replicas {#system_tables-replicas} Содержит информацию и статус для реплицируемых таблиц, расположенных на локальном сервере. Эту таблицу можно использовать для мониторинга. Таблица содержит по строчке для каждой Replicated\*-таблицы. Пример: ``` sql SELECT * FROM system.replicas WHERE table = 'visits' FORMAT Vertical ``` ``` Row 1: ────── database: merge table: visits engine: ReplicatedCollapsingMergeTree is_leader: 1 is_readonly: 0 is_session_expired: 0 future_parts: 1 parts_to_check: 0 zookeeper_path: /clickhouse/tables/01-06/visits replica_name: example01-06-1.yandex.ru replica_path: /clickhouse/tables/01-06/visits/replicas/example01-06-1.yandex.ru columns_version: 9 queue_size: 1 inserts_in_queue: 0 merges_in_queue: 1 log_max_index: 596273 log_pointer: 596274 total_replicas: 2 active_replicas: 2 ``` Столбцы: ``` database: имя БД table: имя таблицы engine: имя движка таблицы is_leader: является ли реплика лидером В один момент времени, не более одной из реплик является лидером. Лидер отвечает за выбор фоновых слияний, которые следует произвести. Замечу, что запись можно осуществлять на любую реплику (доступную и имеющую сессию в ZK), независимо от лидерства. is_readonly: находится ли реплика в режиме "только для чтения" Этот режим включается, если в конфиге нет секции с ZK; если при переинициализации сессии в ZK произошла неизвестная ошибка; во время переинициализации сессии с ZK. is_session_expired: истекла ли сессия с ZK. В основном, то же самое, что и is_readonly. future_parts: количество кусков с данными, которые появятся в результате INSERT-ов или слияний, которых ещё предстоит сделать parts_to_check: количество кусков с данными в очереди на проверку Кусок помещается в очередь на проверку, если есть подозрение, что он может быть битым. zookeeper_path: путь к данным таблицы в ZK replica_name: имя реплики в ZK; разные реплики одной таблицы имеют разное имя replica_path: путь к данным реплики в ZK. То же самое, что конкатенация zookeeper_path/replicas/replica_path. columns_version: номер версии структуры таблицы Обозначает, сколько раз был сделан ALTER. Если на репликах разные версии, значит некоторые реплики сделали ещё не все ALTER-ы. queue_size: размер очереди действий, которых предстоит сделать К действиям относятся вставки блоков данных, слияния, и некоторые другие действия. Как правило, совпадает с future_parts. inserts_in_queue: количество вставок блоков данных, которых предстоит сделать Обычно вставки должны быстро реплицироваться. Если величина большая - значит что-то не так. merges_in_queue: количество слияний, которых предстоит сделать Бывают длинные слияния - то есть, это значение может быть больше нуля продолжительное время. Следующие 4 столбца имеют ненулевое значение только если активна сессия с ZK. log_max_index: максимальный номер записи в общем логе действий log_pointer: максимальный номер записи из общего лога действий, которую реплика скопировала в свою очередь для выполнения, плюс единица Если log_pointer сильно меньше log_max_index, значит что-то не так. total_replicas: общее число известных реплик этой таблицы active_replicas: число реплик этой таблицы, имеющих сессию в ZK; то есть, число работающих реплик ``` Если запрашивать все столбцы, то таблица может работать слегка медленно, так как на каждую строчку делается несколько чтений из ZK. Если не запрашивать последние 4 столбца (log_max_index, log_pointer, total_replicas, active_replicas), то таблица работает быстро. Например, так можно проверить, что всё хорошо: ``` sql SELECT database, table, is_leader, is_readonly, is_session_expired, future_parts, parts_to_check, columns_version, queue_size, inserts_in_queue, merges_in_queue, log_max_index, log_pointer, total_replicas, active_replicas FROM system.replicas WHERE is_readonly OR is_session_expired OR future_parts > 20 OR parts_to_check > 10 OR queue_size > 20 OR inserts_in_queue > 10 OR log_max_index - log_pointer > 10 OR total_replicas < 2 OR active_replicas < total_replicas ``` Если этот запрос ничего не возвращает - значит всё хорошо. ## system.settings Содержит информацию о настройках, используемых в данный момент. То есть, используемых для выполнения запроса, с помощью которого вы читаете из таблицы system.settings. Столбцы: ``` name String - имя настройки value String - значение настройки changed UInt8 - была ли настройка явно задана в конфиге или изменена явным образом ``` Пример: ``` sql SELECT * FROM system.settings WHERE changed ``` ``` ┌─name───────────────────┬─value───────┬─changed─┐ │ max_threads │ 8 │ 1 │ │ use_uncompressed_cache │ 0 │ 1 │ │ load_balancing │ random │ 1 │ │ max_memory_usage │ 10000000000 │ 1 │ └────────────────────────┴─────────────┴─────────┘ ``` ## system.tables Таблица содержит столбцы database, name, engine типа String. Также таблица содержит три виртуальных столбца: metadata_modification_time типа DateTime, create_table_query и engine_full типа String. Для каждой таблицы, о которой знает сервер, будет присутствовать соответствующая запись в таблице system.tables. Эта системная таблица используется для реализации запросов SHOW TABLES. ## system.zookeeper Таблицы не существует, если ZooKeeper не сконфигурирован. Позволяет читать данные из ZooKeeper кластера, описанного в конфигурации. В запросе обязательно в секции WHERE должно присутствовать условие на равенство path - путь в ZooKeeper, для детей которого вы хотите получить данные. Запрос `SELECT * FROM system.zookeeper WHERE path = '/clickhouse'` выведет данные по всем детям узла `/clickhouse`. Чтобы вывести данные по всем узлам в корне, напишите path = '/'. Если узла, указанного в path не существует, то будет брошено исключение. Столбцы: - `name String` — Имя узла. - `path String` — Путь к узлу. - `value String` — Значение узла. - `dataLength Int32` — Размер значения. - `numChildren Int32` — Количество детей. - `czxid Int64` — Идентификатор транзакции, в которой узел был создан. - `mzxid Int64` — Идентификатор транзакции, в которой узел был последний раз изменён. - `pzxid Int64` — Идентификатор транзакции, последний раз удаливший или добавивший детей. - `ctime DateTime` — Время создания узла. - `mtime DateTime` — Время последней модификации узла. - `version Int32` — Версия узла - количество раз, когда узел был изменён. - `cversion Int32` — Количество добавлений или удалений детей. - `aversion Int32` — Количество изменений ACL. - `ephemeralOwner Int64` — Для эфемерных узлов - идентификатор сессии, которая владеет этим узлом. Пример: ``` sql SELECT * FROM system.zookeeper WHERE path = '/clickhouse/tables/01-08/visits/replicas' FORMAT Vertical ``` ``` Row 1: ────── name: example01-08-1.yandex.ru value: czxid: 932998691229 mzxid: 932998691229 ctime: 2015-03-27 16:49:51 mtime: 2015-03-27 16:49:51 version: 0 cversion: 47 aversion: 0 ephemeralOwner: 0 dataLength: 0 numChildren: 7 pzxid: 987021031383 path: /clickhouse/tables/01-08/visits/replicas Row 2: ────── name: example01-08-2.yandex.ru value: czxid: 933002738135 mzxid: 933002738135 ctime: 2015-03-27 16:57:01 mtime: 2015-03-27 16:57:01 version: 0 cversion: 37 aversion: 0 ephemeralOwner: 0 dataLength: 0 numChildren: 7 pzxid: 987021252247 path: /clickhouse/tables/01-08/visits/replicas ``` ## system.mutations {#system_tables-mutations} Таблица содержит информацию о ходе выполнения [мутаций](../query_language/alter.md#alter-mutations) MergeTree-таблиц. Каждой команде мутации соответствует одна строка. В таблице есть следующие столбцы: **database**, **table** - имя БД и таблицы, к которой была применена мутация. **mutation_id** - ID запроса. Для реплицированных таблиц эти ID соответствуют именам записей в директории `/mutations/` в ZooKeeper, для нереплицированных - именам файлов в директории с данными таблицы. **command** - Команда мутации (часть запроса после `ALTER TABLE [db.]table`). **create_time** - Время создания мутации. **block_numbers.partition_id**, **block_numbers.number** - Nested-столбец. Для мутаций реплицированных таблиц для каждой партиции содержит номер блока, полученный этой мутацией (в каждой партиции будут изменены только куски, содержащие блоки с номерами, меньшими номера, полученного мутацией в этой партиции). Для нереплицированных таблиц нумерация блоков сквозная по партициям, поэтому столбец содержит одну запись с единственным номером блока, полученным мутацией. **parts_to_do** - Количество кусков таблицы, которые ещё предстоит изменить. **is_done** - Завершена ли мутация. Замечание: даже если `parts_to_do = 0`, для реплицированной таблицы возможна ситуация, когда мутация ещё не завершена из-за долго выполняющейся вставки, которая добавляет данные, которые нужно будет мутировать. Если во время мутации какого-либо куска возникли проблемы, заполняются следующие столбцы: **latest_failed_part** - Имя последнего куска, мутация которого не удалась. **latest_fail_time** - Время последней неудачной мутации куска. **latest_fail_reason** - Ошибка, возникшая при последней неудачной мутации куска. [Оригинальная статья](https://clickhouse.yandex/docs/ru/operations/system_tables/)