ClickHouse/docs/ru/operations/system_tables.md

43 KiB
Raw Blame History

Системные таблицы

Системные таблицы используются для реализации части функциональности системы, а также предоставляют доступ к информации о работе системы. Вы не можете удалить системную таблицу (хотя можете сделать DETACH). Для системных таблиц нет файлов с данными на диске и файлов с метаданными. Сервер создаёт все системные таблицы при старте. В системные таблицы нельзя записывать данные - можно только читать. Системные таблицы расположены в базе данных system.

system.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

Содержит информацию о количестве произошедших в системе событий, для профилирования и мониторинга. Пример: количество обработанных запросов типа SELECT. Столбцы: event String - имя события, value UInt64 - количество.

system.functions

Содержит информацию об обычных и агрегатных функциях.

Столбцы:

  • name (String) Имя функции.
  • is_aggregate (UInt8) Признак, является ли функция агрегатной.

system.graphite_retentions

Содержит информацию о том, какие параметры graphite_rollup используются в таблицах с движками *GraphiteMergeTree.

Столбцы:

  • 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.numbers

Таблица содержит один столбец с именем number типа UInt64, содержащим почти все натуральные числа, начиная с нуля. Эту таблицу можно использовать для тестов, а также если вам нужно сделать перебор. Чтения из этой таблицы не распараллеливаются.

system.numbers_mt

То же самое, что и system.numbers, но чтение распараллеливается. Числа могут возвращаться в произвольном порядке. Используется для тестов.

system.one

Таблица содержит одну строку с одним столбцом dummy типа UInt8, содержащим значение 0. Эта таблица используется, если в SELECT запросе не указана секция FROM. То есть, это - аналог таблицы DUAL, которую можно найти в других СУБД.

system.parts

Содержит информацию о кусках таблиц семейства MergeTree.

Каждая строка описывает один кусок данных.

Столбцы:

  • partition (String) - Имя партиции. Что такое партиция можно узнать из описания запроса 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) - имя движка таблицы, без параметров.

  • is_frozen (UInt8) Признак, показывающий существование бэкапа партиции. 1, бэкап есть. 0, бэкапа нет. Смотрите раздел FREEZE PARTITION

system.part_log

Системная таблица system.part_log создается только в том случае, если задана серверная настройка part_log.

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

Столбцы:

  • event_type (Enum) — тип события. Столбец может содержать одно из следующих значений: NEW_PART — вставка нового куска; MERGE_PARTS — слияние кусков; DOWNLOAD_PART — загрузка с реплики; REMOVE_PART — удаление или отсоединение из таблицы с помощью 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

Содержит логи выполняемых запросов — дату запуска, длительность выполнения, текст возникших ошибок и другую информацию.

!!! note "Внимание" Таблица не содержит данные, передаваемые в запросах INSERT.

Таблица system.query_log создаётся только в том случае, если задана серверная настройка query_log. Эта настройка определяет правила логирования. Например, с какой периодичностью логи будут записываться в таблицу. Также в этой настройке можно изменить название таблицы.

Чтобы включить логирование запросов, необходимо установить параметр log_queries в 1. Подробнее см. в разделе Настройки.

Логируются следующие запросы:

  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;
  • client_name (String) — имя клиента clickhouse-client;
  • client_revision (UInt32) — ревизия clickhouse-client;
  • client_version_major (UInt32) — мажорная версия clickhouse-client;
  • client_version_minor (UInt32) — минорная версия clickhouse-client;
  • client_version_patch (UInt32) — patch-компонент версии clickhouse-client;
  • http_method (UInt8) — используемый HTTP-метод. Возможные значения:
    • 0 — запрос был вызван из TCP интерфейса;
    • 1 — метод GET;
    • 2 — метод POST.
  • http_user_agent (String) — содержимое заголовка UserAgent;
  • quota_key (String) — ключ квоты, заданный в настройке quotas;
  • 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 (см. параметр flush_interval_milliseconds). Чтобы принудительно пробросить логи из буфера памяти в таблицу, используйте запрос SYSTEM FLUSH LOGS.

При ручном удалении таблицы, она будет повторно создана на лету. Логи, которые содержались в таблице до её удаления, не сохраняются.

!!! note "Примечание" Срок хранения логов в таблице неограничен — они не удаляются автоматически. Об удалении неактуальных логов вам нужно позаботиться самостоятельно.

Вы можете задать произвольный ключ партиционирования для таблицы system.query_log, в настройке query_log (см. параметр partition_by).

system.replicas

Содержит информацию и статус для реплицируемых таблиц, расположенных на локальном сервере. Эту таблицу можно использовать для мониторинга. Таблица содержит по строчке для каждой Replicated*-таблицы.

Пример:

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), то таблица работает быстро.

Например, так можно проверить, что всё хорошо:

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 - была ли настройка явно задана в конфиге или изменена явным образом

Пример:

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 — Для эфемерных узлов - идентификатор сессии, которая владеет этим узлом.

Пример:

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

Таблица содержит информацию о ходе выполнения мутаций MergeTree-таблиц. Каждой команде мутации соответствует одна строка. В таблице есть следующие столбцы:

database, table - имя БД и таблицы, к которой была применена мутация.

mutation_id - ID запроса. Для реплицированных таблиц эти ID соответствуют именам записей в директории <table_path_in_zookeeper>/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 - Ошибка, возникшая при последней неудачной мутации куска.

Оригинальная статья