С помощью этой таблицы можно получить информацию аналогично запросу [DESCRIBE TABLE](../query_language/misc.md#misc-describe-table), но для многих таблиц сразу.
Таблица `system.columns` содержит столбцы (тип столбца указан в скобках):
-`database` (String) — имя базы данных.
-`table` (String) — имя таблицы.
-`name` (String) — имя столбца.
-`type` (String) — тип столбца.
-`default_kind` (String) — тип выражения (`DEFAULT`, `MATERIALIZED`, `ALIAS`) значения по умолчанию, или пустая строка.
-`default_expression` (String) — выражение для значения по умолчанию или пустая строка.
-`data_compressed_bytes` (UInt64) — размер сжатых данных в байтах.
-`data_uncompressed_bytes` (UInt64) — размер распакованных данных в байтах.
-`marks_bytes` (UInt64) — размер засечек в байтах.
-`comment` (String) — комментарий к столбцу или пустая строка.
-`is_in_partition_key` (UInt8) — флаг, показывающий включение столбца в ключ партиционирования.
-`is_in_sorting_key` (UInt8) — флаг, показываюший включение столбца в ключ сортировки.
-`is_in_primary_key` (UInt8) — флаг, показывающий включение столбца в первичный ключ.
-`is_in_sampling_key` (UInt8) — флаг, показывающий включение столбца в ключ выборки.
Содержит информацию об отсоединённых кусках таблиц семейства [MergeTree](table_engines/mergetree.md). Столбец `reason` содержит причину, по которой кусок был отсоединён. Для кусов, отсоединённых пользователем, `reason` содержит пустую строку.
Такие куски могут быть присоединены с помощью [ALTER TABLE ATTACH PARTITION|PART](../query_language/query_language/alter/#alter_attach-partition). Остальные столбцы описаны в [system.parts](#system_tables-parts).
Если имя куска некорректно, значения некоторых столбцов могут быть `NULL`. Такие куски могут быть удалены с помощью [ALTER TABLE DROP DETACHED PART](../query_language/query_language/alter/#alter_drop-detached).
-`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 словарей, все ячейки памяти выделяются заранее, независимо от реальной заполненности словаря.
Содержит информацию о количестве событий, произошедших в системе. Например, в таблице можно найти, сколько запросов `SELECT` обработано с момента запуска сервера ClickHouse.
Столбцы:
-`event` ([String](../data_types/string.md)) — имя события.
-`value` ([UInt64](../data_types/int_uint.md)) — количество произошедших событий.
-`description` ([String](../data_types/string.md)) — описание события.
│ Query │ 12 │ Number of queries to be interpreted and potentially executed. Does not include queries that failed to parse or were rejected due to AST size limits, quota limits or limits on the number of simultaneously running queries. May include internal queries initiated by ClickHouse itself. Does not count subqueries. │
│ SelectQuery │ 8 │ Same as Query, but only for SELECT queries. │
│ FileOpen │ 73 │ Number of files opened. │
│ ReadBufferFromFileDescriptorRead │ 155 │ Number of reads (read/pread) from a file descriptor. Does not include sockets. │
│ ReadBufferFromFileDescriptorReadBytes │ 9931 │ Number of bytes read from file descriptors. If the file is compressed, this will show the compressed data size. │
Содержит информацию о том, какие параметры [graphite_rollup](server_settings/settings.md#server_settings-graphite_rollup) используются в таблицах с движками [\*GraphiteMergeTree](table_engines/graphitemergetree.md).
Содержит метрики, которые могут быть рассчитаны мгновенно или имеют текущее значение. Например, число одновременно обрабатываемых запросов или текущее значение задержки реплики. Эта таблица всегда актуальна.
Столбцы:
-`metric` ([String](../data_types/string.md)) — название метрики.
-`value` ([Int64](../data_types/int_uint.md)) — значение метрики.
-`description` ([String](../data_types/string.md)) — описание метрики.
│ Merge │ 0 │ Number of executing background merges │
│ PartMutation │ 0 │ Number of mutations (ALTER DELETE/UPDATE) │
│ ReplicatedFetch │ 0 │ Number of data parts being fetched from replicas │
│ ReplicatedSend │ 0 │ Number of data parts being sent to replicas │
│ ReplicatedChecks │ 0 │ Number of data parts checking for consistency │
│ BackgroundPoolTask │ 0 │ Number of active tasks in BackgroundProcessingPool (merges, mutations, fetches, or replication queue bookkeeping) │
│ BackgroundSchedulePoolTask │ 0 │ Number of active tasks in BackgroundSchedulePool. This pool is used for periodic ReplicatedMergeTree tasks, like cleaning old data parts, altering data parts, replica re-initialization, etc. │
│ DiskSpaceReservedForMerge │ 0 │ Disk space reserved for currently running background merges. It is slightly more than the total size of currently merging parts. │
│ DistributedSend │ 0 │ Number of connections to remote servers sending data that was INSERTed into Distributed tables. Both synchronous and asynchronous mode. │
- partition (String) - Имя партиции. Что такое партиция можно узнать из описания запроса [ALTER](../query_language/alter.md#query_language_queries_alter).
Форматы:
-`YYYYMM` для автоматической схемы партиционирования по месяцам.
-`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) - выделенный с резервом объем памяти (в байтах) для размещения первичных ключей;
Системная таблица `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` — изменение куска; `MOVE_PART` — перемещение куска между дисками.
-`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`.
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 - идентификатор запроса, если был задан.
Содержит информацию о выполнении запросов. Для каждого запроса вы можете увидеть время начала обработки, продолжительность обработки, сообщения об ошибках и другую информацию.
ClickHouse создаёт таблицу только в том случае, когда установлен конфигурационный параметр сервера [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_*`.
-`quota_key` (String) — идентификатор квоты из настроек [квот](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`.
Если таблицу удалить вручную, она пересоздастся автоматически "на лету". При этом все логи на момент удаления таблицы будут удалены.
Можно указать произвольный ключ партиционирования для таблицы `system.query_log` в конфигурации [query_log](server_settings/settings.md#server_settings-query-log) (параметр `partition_by`).
В один момент времени, не более одной из реплик является лидером. Лидер отвечает за выбор фоновых слияний, которые следует произвести.
Замечу, что запись можно осуществлять на любую реплику (доступную и имеющую сессию в 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), то таблица работает быстро.
-`is_temporary` (UInt8) — флаг, указывающий на то, временная это таблица или нет.
-`data_path` (String) — путь к данным таблицы в файловой системе.
-`metadata_path` (String) — путь к табличным метаданным в файловой системе.
-`metadata_modification_time` (DateTime) — время последней модификации табличных метаданных.
-`dependencies_database` (Array(String)) — зависимости базы данных.
-`dependencies_table` (Array(String)) — табличные зависимости (таблицы [MaterializedView](table_engines/materializedview.md), созданные на базе текущей таблицы).
-`create_table_query` (String) — запрос, которым создавалась таблица.
Таблица содержит информацию о ходе выполнения [мутаций](../query_language/alter.md#alter-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** - Имя последнего куска, мутация которого не удалась.
Таблица содержит информацию о дисках, заданных в [конфигурации сервера](#table_engine/mergetree.md#table_engine-mergetree-multiple-volumes_configure). Имеет следующие столбцы:
-`name String` — имя диска в конфигурации сервера.
-`path String` — путь к точке монтирования на файловой системе.
-`free_space UInt64` — свободное место на диске в данный момент времени в байтах.
-`total_space UInt64` — общее количество места на диске в данный момент времени в байтах.
-`keep_free_space UInt64` — количество байт, которое должно оставаться свободным (задается в конфигурации).
Таблица содержит информацию о политиках хранения и томах, заданных в [конфигурации сервера](#table_engine/mergetree.md#table_engine-mergetree-multiple-volumes_configure). Данные в таблице денормализованны, имя одной политики хранения может содержаться несколько раз, по количеству томов в ней. Имеет следующие столбцы:
-`policy_name String` — имя политики хранения в конфигурации сервера.
-`volume_name String` — имя тома, который содержится в данной политике хранения.
-`volume_priority UInt64` — порядковый номер тома, согласно конфигурации.
-`disks Array(String)` — имена дисков, содержащихся в данной политике хранения.
-`max_data_part_size UInt64` — максимальный размер куска, который может храниться на дисках этого тома (0 — без ограничений).
-`move_factor Float64` — доля свободного места, при превышении которой данные начинают перемещаться на следующий том.