系统表概览
- 服务器状态、进程和环境。
- 服务器内部进程。
- 构建 ClickHouse 可执行文件时使用的选项。
- 位于
system数据库中。 - 仅支持读取数据。
- 不能被 drop 或 alter,但可以 detached。
/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冲突。如果同时设置,server 将抛出异常并退出。
MergeTree 引擎表的分区功能。
系统指标的来源
CAP_NET_ADMIN能力。- procfs (仅在 Linux 中) 。
CAP_NET_ADMIN 能力,则会尝试回退到 ProcfsMetricsProvider。ProcfsMetricsProvider 支持按查询收集系统指标 (CPU 和 I/O) 。
如果系统支持并启用了 procfs,ClickHouse server 会收集以下指标:
OSCPUVirtualTimeMicrosecondsOSCPUWaitMicrosecondsOSIOWaitMicrosecondsOSReadCharsOSWriteCharsOSReadBytesOSWriteBytes
从 Linux 内核 5.14.x 开始,
OSIOWaitMicroseconds 默认被禁用。
你可以使用 sudo sysctl kernel.task_delayacct=1 启用它,或者在 /etc/sysctl.d/ 中创建一个 .conf 文件,并写入 kernel.task_delayacct = 1ClickHouse Cloud 中的系统表
parts 都应保持一致:
- 带有
_log后缀的系统表。 - 暴露指标的系统表,例如
metrics、asynchronous_metrics、events。 - 暴露正在进行的进程的系统表,例如
processes、merges。
system.query_log 表为例,其中包含该节点执行的每个查询对应的一行:
查询多个版本
merge 函数跨这些表查询。例如,下面的查询会找出每个 query_log 表中发送到目标节点的最新查询:
不要依赖数字后缀判断顺序虽然表名中的数字后缀可能暗示数据的顺序,但绝不能依赖它。因此,在针对特定日期范围进行查询时,务必将 merge 表函数与日期过滤器结合使用。
跨节点查询
clusterAllReplicas 函数和 merge 函数。clusterAllReplicas 函数支持跨 “default” 集群中的所有副本查询系统表,将各节点的数据汇总为统一结果。结合 merge 函数后,这种方法可用于查询集群中特定表的全部系统数据。
这种方法对于监控和调试整个集群范围内的操作尤为有用,有助于用户有效分析其 ClickHouse Cloud 部署的健康状况和性能。
ClickHouse Cloud 提供由多个副本组成的集群,以实现冗余和故障转移。这使其能够支持动态自动扩缩容和零停机升级等功能。在某些时刻,新节点可能正在加入集群,或正从集群中移除。要跳过这些节点,请按照下方示例,在使用
clusterAllReplicas 的查询中添加 SETTINGS skip_unavailable_shards = 1。query_log 表为例,这通常对分析至关重要。
跨节点和跨版本查询
merge 函数结合使用后,就能得到在所选日期范围内的准确结果: