Обзор системных таблиц
Обзор системных таблиц
Системные таблицы предоставляют информацию о:
- Состоянии сервера, процессах и окружении.
- Внутренних процессах сервера.
- Опциях, используемых при сборке бинарного файла ClickHouse.
Системные таблицы:
- Находятся в базе данных
system
. - Доступны только для чтения данных.
- Не могут быть удалены или изменены, но могут быть отсоединены.
Большинство системных таблиц хранят свои данные в ОЗУ. Сервер ClickHouse создаёт такие системные таблицы при запуске.
В отличие от других системных таблиц, системные таблицы журнала metric_log, query_log, query_thread_log, trace_log, part_log, crash_log, text_log и backup_log обслуживаются движком таблиц MergeTree и по умолчанию хранят свои данные в файловой системе. Если вы удалите таблицу из файловой системы, сервер ClickHouse создаст её вновь пустую при следующей записи данных. Если схема системной таблицы изменилась в новой версии, то ClickHouse переименует текущую таблицу и создаст новую.
Системные таблицы журнала могут быть настроены, создав файл конфигурации с тем же именем, что и таблица, под /etc/clickhouse-server/config.d/
, или установив соответствующие элементы в /etc/clickhouse-server/config.xml
. Элементы, которые можно настроить:
database
: база данных, к которой принадлежит таблица журнала. Эта опция устарела. Все системные таблицы журнала находятся в базе данныхsystem
.table
: таблица для вставки данных.partition_by
: укажите выражение PARTITION BY.ttl
: укажите выражение TTL для таблицы.flush_interval_milliseconds
: интервал сброса данных на диск.engine
: предоставьте полное выражение для движка (начиная сENGINE =
) с параметрами. Эта опция конфликтует сpartition_by
иttl
. Если заданы вместе, сервер вызовет исключение и завершит работу.
Пример:
По умолчанию, рост таблицы неограничен. Чтобы контролировать размер таблицы, вы можете использовать настройки TTL для удаления устаревших записей журнала. Также вы можете использовать функцию шардирования таблиц движка MergeTree
.
Источники системной статистики
Для сбора системной статистики сервер ClickHouse использует:
- Возможность
CAP_NET_ADMIN
. - procfs (только в Linux).
procfs
Если сервер ClickHouse не имеет возможности CAP_NET_ADMIN
, он пытается обратиться к ProcfsMetricsProvider
. ProcfsMetricsProvider
позволяет собирать системные метрики по запросам (для CPU и I/O).
Если procfs поддерживается и включен в системе, сервер ClickHouse собирает следующие метрики:
OSCPUVirtualTimeMicroseconds
OSCPUWaitMicroseconds
OSIOWaitMicroseconds
OSReadChars
OSWriteChars
OSReadBytes
OSWriteBytes
OSIOWaitMicroseconds
по умолчанию отключен в ядрах Linux, начиная с 5.14.x.
Вы можете включить его, используя sudo sysctl kernel.task_delayacct=1
или создав .conf
файл в /etc/sysctl.d/
с kernel.task_delayacct = 1
Системные таблицы в ClickHouse Cloud
В ClickHouse Cloud системные таблицы предоставляют критически важную информацию о состоянии и производительности сервиса, так же как и в самоуправляемых развертываниях. Некоторые системные таблицы работают на уровне всего кластера, особенно те, которые получают свои данные из узлов Keeper, которые управляют распределёнными метаданными. Эти таблицы отражают общее состояние кластера и должны быть согласованы при запросах на отдельных узлах. Например, таблица parts
должна быть согласованной независимо от того, с какого узла она запрашивается:
С другой стороны, другие системные таблицы специфичны для узлов, например, в памяти или сохраняющие свои данные с помощью движка MergeTree. Это типично для данных, таких как журналы и метрики. Эта устойчивость обеспечивает доступность исторических данных для анализа. Однако эти специфичные для узлов таблицы по своей природе уникальны для каждого узла.
Чтобы всесторонне просмотреть весь кластер, пользователи могут использовать функцию clusterAllReplicas
. Эта функция позволяет запрашивать системные таблицы по всем репликам в кластере "default", объединяя данные специфичных для узлов в единый результат. Этот подход особенно ценен для мониторинга и отладки операций по всему кластеру, обеспечивая пользователям возможность эффективно анализировать состояние и производительность своего развертывания ClickHouse Cloud.
ClickHouse Cloud предоставляет кластеры с несколькими репликами для избыточности и отказоустойчивости. Это позволяет использовать такие функции, как динамическое автоматическое масштабирование и обновления без простоя. В определённый момент времени новые узлы могут добавляться в кластер или удаляться из него. Чтобы пропустить эти узлы, добавьте SETTINGS skip_unavailable_shards = 1
к запросам, использующим clusterAllReplicas
, как показано ниже.
Например, рассмотрим разницу при запросе таблицы query_log
- часто необходимой для анализа.
В общем, следующие правила могут быть применены при определении, является ли системная таблица специфичной для узла:
- Системные таблицы с суффиксом
_log
. - Системные таблицы, которые предоставляют метрики, например,
metrics
,asynchronous_metrics
,events
. - Системные таблицы, которые показывают текущие процессы, например,
processes
,merges
.