Системные таблицы
Введение
Системные таблицы содержат информацию о:
- состоянии сервера, процессов и окружении.
- внутренних процессах сервера.
Системные таблицы:
- находятся в базе данных
system
. - доступны только для чтения данных.
- не могут быть удалены или изменены, но их можно отсоединить.
Большинство системных таблиц хранят свои данные в оперативной памяти. Сервер ClickHouse создает эти системные таблицы при старте.
В отличие от других системных таблиц, таблицы с системными логами metric_log, query_log, query_thread_log, trace_log, part_log, crash_log, text_log и backup_log используют движок таблиц MergeTree и по умолчанию хранят свои данные в файловой системе. Если удалить таблицу из файловой системы, сервер ClickHouse снова создаст пустую таблицу во время следующей записи данных. Если схема системной таблицы изменилась в новом релизе, то ClickHouse переименует текущую таблицу и создаст новую.
Таблицы с системными логами log
можно настроить, создав конфигурационный файл с тем же именем, что и таблица в разделе /etc/clickhouse-server/config.d/
, или указав соответствующие элементы в /etc/clickhouse-server/config.xml
. Настраиваться могут следующие элементы:
database
— база данных, к которой принадлежит системная таблица. Эта опция на текущий момент устарела. Все системные таблицы находятся в базе данныхsystem
.table
— таблица для добавления данных.partition_by
— ключ партиционирования.ttl
— время жизни записей в таблице.flush_interval_milliseconds
— интервал сброса данных на диск, в миллисекундах.engine
— полное имя движка (начиная сENGINE =
) с параметрами. Эта опция противоречитpartition_by
иttl
. Если указать оба параметра вместе, сервер вернет ошибку и завершит работу.
Пример:
<clickhouse>
<query_log>
<database>system</database>
<table>query_log</table>
<partition_by>toYYYYMM(event_date)</partition_by>
<ttl>event_date + INTERVAL 30 DAY DELETE</ttl>
<!--
<engine>ENGINE = MergeTree PARTITION BY toYYYYMM(event_date) ORDER BY (event_date, event_time) SETTINGS index_granularity = 1024</engine>
-->
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
<max_size_rows>1048576</max_size_rows>
<reserved_size_rows>8192</reserved_size_rows>
<buffer_size_rows_flush_threshold>524288</buffer_size_rows_flush_threshold>
<flush_on_crash>false</flush_on_crash>
</query_log>
</clickhouse>
По умолчанию размер таблицы не ограничен. Управлять размером таблицы можно используя TTL для удаления устаревших записей журнала. Также вы можете использовать функцию партиционирования для таблиц MergeTree
.
Источники системных показателей
Для сбора системных показателей сервер ClickHouse использует:
- возможности
CAP_NET_ADMIN
. - procfs (только Linux).
Если для сервера ClickHouse не включено CAP_NET_ADMIN
, он пытается обратиться к ProcfsMetricsProvider
. ProcfsMetricsProvider
позволяет собирать системные показатели для каждого запроса (для CPU и I/O).
Если procfs поддерживается и включена в системе, то сервер ClickHouse собирает следующие системные показатели:
OSCPUVirtualTimeMicroseconds
OSCPUWaitMicroseconds
OSIOWaitMicroseconds
OSReadChars
OSWriteChars
OSReadBytes
OSWriteBytes