跳至主要内容

系统表

简介

系统表提供有关以下方面的信息:

  • 服务器状态、进程和环境。
  • 服务器的内部进程。
  • 构建 ClickHouse 二进制文件时使用的选项。

系统表

  • 位于 system 数据库中。
  • 仅可用于读取数据。
  • 无法删除或更改,但可以分离。

大多数系统表将其数据存储在 RAM 中。ClickHouse 服务器在启动时创建此类系统表。

与其他系统表不同,系统日志表 metric_logquery_logquery_thread_logtrace_logpart_logcrash_logtext_logbackup_logMergeTree 表引擎提供服务,默认情况下将其数据存储在文件系统中。如果从文件系统中删除表,则 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_byttl 冲突。如果同时设置,服务器将引发异常并退出。

示例

<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 中)。

procfs

如果 ClickHouse 服务器没有 CAP_NET_ADMIN 功能,则尝试回退到 ProcfsMetricsProviderProcfsMetricsProvider 允许收集每个查询的系统指标(对于 CPU 和 I/O)。

如果系统上支持并启用了 procfs,则 ClickHouse 服务器会收集以下指标:

  • OSCPUVirtualTimeMicroseconds
  • OSCPUWaitMicroseconds
  • OSIOWaitMicroseconds
  • OSReadChars
  • OSWriteChars
  • OSReadBytes
  • OSWriteBytes
注意

从 5.14.x 开始,Linux 内核中默认禁用 OSIOWaitMicroseconds。可以使用 sudo sysctl kernel.task_delayacct=1 或在 /etc/sysctl.d/ 中创建包含 kernel.task_delayacct = 1.conf 文件来启用它。