本文来自 ClickHouse 官方文档。
system.asynchronous_metrics 表包含在后台定期计算的指标。例如,正在使用的 RAM 数量。
列信息:
列名 | 类型 | 描述 |
---|---|---|
metric | String | 指标名 |
value | Float64 | 指标值 |
示例:
SELECT * FROM system.asynchronous_metrics LIMIT 10
列名 | 类型 | 描述 |
---|---|---|
cluster | String | 集群名称 |
shard_num | UInt32 | 集群中分片号 |
shard_weight | UInt32 | 写数据时分片的权重 |
replica_num | UInt32 | 分片中的副本号 |
host_name | String | 节点名 |
host_address | String | 节点 IP 地址 |
port | UInt16 | 用于连接 server 的端口号 |
user | String | 用于连接 server 的用户名 |
errors_count | UInt32 | 该节点无法到达副本的次数 |
estimated_recovery_time | UInt32 | 从当前到副本错误数为零且被认为恢复正常的时间,单位为秒 |
system.clusters 表包含配置文件中可用集群以及配置文件中 server 的信息。
列信息:
对于集群的每一个查询,errors_count 都会更新一次,但 estimated_recovery_time 会根据需求重新计算,所以可能会出现这样的情况,当 errors_count 非零、estimated_recovery_time 为零时,下次查询会把 errors_count 置为零,并且尝试使用副本,就好像没有错误一样。
system.columns 表包含了所有表的列信息。您可以使用此表获取与 DESCRIBE TABLE 查询类似的信息,并且一次获取多个表的信息。
列信息:
列名 | 类型 | 描述 |
---|---|---|
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 | marks 的大小,以字节为单位 |
comment | String | 列的注释,或者为空字符串(如果未定义) |
is_in_partition_key | UInt8 | 表示列是否在分区表达式中的标志 |
is_in_sorting_key | UInt8 | 表示列是否在排序键表达式中的标志 |
is_in_primary_key | UInt8 | 表示列是否在主键表达式中的标志 |
is_in_sampling_key | UInt8 | 表示列是否在采样键表达式中的标志 |
system.contributors 包含有关贡献者的信息,所有贡献者以随机顺序排列,该顺序在查询执行时是随机的。
system.databases 该表仅包含一个名为“name”的 String 列-数据库名称。server 知道每个数据库在表中都有一个对应的条目。该系统表用于实现 SHOW DATABASES 查询。
system.detached_parts 包含有关 MergeTree 表的分离 part 的信息。reason 列表示为什么该 part 要分离。对于 user-detache 的部分,reason 列为空。有关其他列的描述,请参见 system.parts。如果 part 的名字非法,则某些列的值可能为 NULL,可以使用ALTER TABLE DROP DETACHED PART
删除这些 parts。
system.dictionaries 包含有关外部词典的信息。
列信息:
列名 | 类型 | 描述 |
---|---|---|
name | String | 字典名 |
type | String | 字典类型,Flat、Hashed、Cache |
origin | String | 描述字典的配置文件的路径 |
attribute.names | Array(String) | 字典提供的属性名称数组 |
attribute.types | Array(String) | 字典提供的属性类型的对应数组 |
has_hierarchy | UInt8 | 字典是否分层 |
bytes_allocated | UInt64 | 字典使用的 RAM 数量 |
hit_rate | Float64 | 对于缓存字典,该值在缓存中的使用百分比 |
element_count | UInt64 | 词典中存储的项目数 |
load_factor | Float64 | 字典中填充的百分比 |
creation_time | DateTime | 创建字典或上次成功重新加载字典的时间 |
last_exception | String | 错误文本,记录的是因为无法创建字典导致的,创建或重新加载字典时发生的错误 |
source | String | 描述字典数据源的文本 |
system.events 包含有关系统中发生的事件数的信息。例如,您可以在 system.events 表中找到自 ClickHouse server 启动以来已处理的 SELECT 查询数量。
列信息:
列名 | 类型 | 描述 |
---|---|---|
event | String | 事件名 |
value | UInt64 | 事件发生的次数 |
description | String | 事件描述 |
示例:
SELECT * FROM system.events LIMIT 5
system.functions 包含有关普通函数和聚合函数的信息。
列信息:
列名 | 类型 | 描述 |
---|---|---|
name | String | 函数名 |
is_aggregate | UInt8 | 是否为聚合函数 |
system.graphite_retentions 包含与* GraphiteMergeTree
引擎一起在表中使用的关于参数 graphip_rollup 的信息。
列信息:
列名 | 类型 | 描述 |
---|---|---|
config_name | String | graphite_rollup 变量名 |
regexp | String | 指标名称的模式 |
function | String | 汇总函数的名称 |
age | UInt64 | 数据的最小使用期限(以秒为单位) |
precision | UInt64 | 数据使用期限的精度(以秒为单位) |
priority | UInt16 | 模式优先级 |
is_default | UInt8 | 模式是否为默认 |
Tables.database | Array(String) | 使用 config_name 参数的数据库表的名称数组 |
Tables.table | Array(String) | 使用 config_name 参数的表名数组 |
system.merges 表包含有关 MergeTree 系列表中当前正在处理的 merge 和 part 突变的信息。
列信息:
列名 | 类型 | 描述 |
---|---|---|
database | String | 表所在的数据库的名称 |
table | String | 表名 |
elapsed | Float64 | 自合并开始起经过的时间(以秒为单位) |
progress | Float64 | 已完成工作(从0到1)的百分比 |
num_parts | UInt64 | 合并件数 |
result_part_name | String | 合并后将形成的 part 的名称 |
is_mutation | UInt8 | 如果此过程是 part 突变,则为1 |
total_size_bytes_compressed | UInt64 | 合并块中压缩数据的总大小 |
total_size_marks | UInt64 | 合并 parts 中的 marks 总数 |
bytes_read_uncompressed | UInt64 | 读取的字节数,未压缩 |
rows_read | UInt64 | 读取的行数 |
bytes_written_uncompressed | UInt64 | 写入的字节数,未压缩 |
rows_written | UInt64 | 写入的行数 |
system.metrics 表包含可以立即计算或具有当前值的指标。例如,同时处理的查询数或当前副本延迟。该表始终是最新的。
列信息:
列名 | 类型 | 描述 |
---|---|---|
metric | String | 指标名 |
value | Int64 | 指标值 |
description | String | 指标描述 |
所支持的指标可以在 ClickHouse 的源码文件中找到 dbms/src/Common/CurrentMetrics.cpp。
示例:
SELECT * FROM system.metrics LIMIT 10
system.metric_log 表包含来自表 system.metrics 和 system.events 的指标值的历史记录,定期刷新到磁盘。
要在 system.metric_log 上打开指标历史采集,请按以下内容创建/etc/clickhouse-server/config.d/metric_log.xml
,并重启 clickhouse-server:
<yandex>
<metric_log>
<database>system</database>
<table>metric_log</table>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
<collect_interval_milliseconds>1000</collect_interval_milliseconds>
</metric_log>
</yandex>
示例:
SELECT * FROM system.metric_log LIMIT 1 FORMAT Vertical;
该表仅包含一个名为“number”的 UInt64 列,其中几乎包含所有从零开始的自然数。您可以使用该表进行测试,或者根据需要进行暴力搜索。从该表读取的数据不会并行化。
与 system.numbers 表相同,但读取是并行的。可以按任何顺序返回数字(用于测试)。
该表只有一行一列,其中“dummy”列为 UInt8 类型,值为0。如果 SELECT 查询未指定 FROM 子句,则使用此表。这类似于在其他 DBMS 中找到的 DUAL 表。
system.parts 包含 MergeTree 表的 parts 信息,每一行描述了一个数据分块。
列信息:
列名 | 类型 | 描述 |
---|---|---|
partition | String | 分区名称 |
name | String | 数据分块名 |
active | UInt8 | 表示数据部分是否处于活跃状态的标志。如果数据分块处于活跃状态,则会在表中使用它。否则,它将被删除。合并后,不活跃的数据分块仍然保留 |
marks | UInt64 | marks 数量 |
rows | UInt64 | 行数 |
bytes_on_disk | UInt64 | 所有数据分块文件的总大小(以字节为单位) |
data_compressed_bytes | UInt64 | 数据分块中压缩数据的总大小。不包括所有辅助文件(例如,带标记的文件) |
data_uncompressed_bytes | UInt64 | 数据分块中未压缩数据的总大小。不包括所有辅助文件(例如,带标记的文件) |
marks_bytes | UInt64 | 带标记的文件大小 |
modification_time | DateTime | 包含数据分块的目录被修改的时间 |
remove_time | DateTime | 数据分块变为非活跃状态的时间 |
refcount | UInt32 | 使用数据分块的位置数。大于2的值表示该数据分块用于查询或合并 |
min_date | Date | 数据分块中日期键的最小值 |
max_date | Date | 数据分块中日期键的最大值 |
min_time | DateTime | 数据分块中日期和时间键的最小值 |
max_time | DateTime | 数据分块中日期和时间键的最大值 |
partition_id | String | 分区 ID |
min_block_number | UInt64 | 合并后组成当前分块的最小数据分块数 |
max_block_number | UInt64 | 合并后组成当前分块的最大数据分块数 |
level | UInt32 | merge tree 的深度。0表示当前分块是通过插入而不是通过合并其他分块来创建的 |
data_version | UInt64 | 用于确定应将哪些突变应用于数据分块(版本高于 data_version 的突变) |
primary_key_bytes_in_memory | UInt64 | 主键值使用的内存量(以字节为单位) |
primary_key_bytes_in_memory_allocated | UInt64 | 主键值保留的内存量(以字节为单位) |
is_frozen | UInt8 | 表示存在分区数据备份的标志。1,备份存在。0,表示备份不存在 |
database | String | 数据库名 |
table | String | 表名 |
engine | String | 不带参数的表引擎名称 |
path | String | 包含数据分块文件的文件夹的绝对路径 |
disk | String | 存储数据分块的磁盘名称 |
hash_of_all_files | String | sipHash128 的压缩文件 |
hash_of_uncompressed_files | String | sipHash128 的未压缩文件(带有标记的文件,索引文件等) |
uncompressed_hash_of_compressed_files | String | sipHash128 压缩文件中的数据,就好像它们是未压缩的一样 |
bytes | UInt64 | bytes_on_disk 的别名 |
marks_size | UInt64 | mark_bytes 的别名 |
仅当指定 part_log server 设置时,才会创建 system.part_log 表。该表包含有关 MergeTree 系列表中数据分块发生的事件的信息,例如添加或合并数据。
列信息:
列名 | 类型 | 描述 |
---|---|---|
event_type | Enum | 数据分块发生的事件的类型。可取值为 NEW_PART、MERGE_PARTS、DOWNLOAD_PART、REMOVE_PART、MUTATE_PART、MOVE_PART 其中之一。 |
event_date | Date | 事件日期 |
event_time | DateTime | 事件时间 |
duration_ms | UInt64 | 持续时间 |
database | String | 数据分块所在的数据库的名称 |
table | String | 数据分块所在的表的名称 |
part_name | String | 数据分块名 |
partition_id | String | 数据分块插入到的分区的 ID |
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 表之后创建。
该系统表用于实现 SHOW PROCESSLIST 查询。
列信息:
列名 | 类型 | 描述 |
---|---|---|
user | String | 进行查询的用户 |
address | String | 发出请求的 IP 地址 |
elapsed | Float64 | 自请求执行开始以来的时间(以秒为单位) |
rows_read | UInt64 | 从表中读取的行数。对于分布式处理,在请求者 server 上,这是所有远程 server 的总数 |
bytes_read | UInt64 | 从表中读取的未压缩字节数。对于分布式处理,在请求者 server 上,这是所有远程 server 的总数 |
total_rows_approx | UInt64 | 应该读取的总行数的近似值。对于分布式处理,在请求者 server 上,这是所有远程 server 的总数 |
memory_usage | UInt64 | 请求使用的 RAM 量。它可能不包括某些类型的专用内存 |
query | String | 查询文本。对于 INSERT,不包含要插入的数据 |
query_id | String | 查询 ID(如果已定义) |
system.text_log 表包含日志记录条目。可以使用 text_log.level 服务器设置来限制进入该表的日志记录级别。
列信息:
列名 | 类型 | 描述 |
---|---|---|
event_date | Date | 条目日期 |
event_time | DateTime | 条目时间 |
microseconds | UInt32 | 条目时间 |
thread_name | String | 进行日志记录的线程的名称 |
thread_id | UInt64 | 操作系统线程 ID |
level | Enum8 | 日志级别。'Fatal' = 1,'Critical' = 2,'Error' = 3,'Warning' = 4,'Notice' = 5,'Information' = 6,'Debug' = 7,'Trace' = 8 |
query_id | String | 查询的 ID |
logger_name | LowCardinality(String) | 记录器的名称(如 DDLWorker) |
message | String | 日志信息 |
revision | UInt32 | ClickHouse 版本 |
source_file | LowCardinality(String) | 完成日志记录的源文件 |
source_line | UInt64 | 完成记录的源代码行 |
system.query_log 表包含有关查询执行的信息。对于每个查询,您可以查看处理开始时间、处理持续时间、错误消息和其他信息。
system.query_log 表注册两种查询:
initial_*
列中。每个查询根据查询的状态在 query_log 表中创建一两行:
默认情况下,日志以7.5秒的间隔添加到表中。您可以在 query_log server 中设置此间隔(请参见 flush_interval_milliseconds 参数)。要将日志从内存缓冲区强行刷新到表中,请使用 SYSTEM FLUSH LOGS 查询。
手动删除表后,将即时自动创建它。所有先前的日志将被删除。
NOTE:日志的存储期限不受限制。日志不会自动从表格中删除,用户需自行删除过时的日志。您可以在 query_log server 中为 system.query_log 表指定一个任意分区键(请参阅 partition_by 参数)。
system.query_thread_log 表包含有关每个查询执行线程的信息。
默认情况下,日志以7.5秒的间隔添加到表中。您可以在 query_log server 中设置此间隔(请参见 flush_interval_milliseconds 参数)。要将日志从内存缓冲区强行刷新到表中,请使用 SYSTEM FLUSH LOGS 查询。
手动删除表后,将即时自动创建它。所有先前的日志将被删除。
NOTE:日志的存储期限不受限制。日志不会自动从表格中删除,用户需自行删除过时的日志。您可以在 query_log server 中为 system.query_log 表指定一个任意分区键(请参阅 partition_by 参数)。
system.trace_log 表包含由采样查询分析器收集的堆栈跟踪记录。设置 trace_log server 配置部分后,ClickHouse 会创建此表。另外,还应该设置 query_profiler_real_time_period_ns 和 query_profiler_cpu_time_period_ns。要分析日志,请使用 addressToLine、addressToSymbol 和 demangle 自我检查函数。
列信息:
列名 | 类型 | 描述 |
---|---|---|
event_date | Date | 采样日期 |
event_time | DateTIme | 采样时间 |
revision | UInt32 | ClickHouse server 版本修订 |
timer_type | Enum8 | 计时器类型,取值 Real、CPU |
thread_number | UInt32 | 线程标识符 |
query_id | String | 查询标识符,可用于获取有关从 query_log 系统表中运行的查询的详细信息 |
trace | Array(UInt64) | 采样时的堆栈跟踪,每个元素都是 ClickHouse server 进程内部的虚拟内存地址 |
示例:
SELECT * FROM system.trace_log LIMIT 1 \G;
system.replicas 表包含本地服务器上复制表的信息和状态。该表可用于监视,该表为每个Replicated *
表包含一行。
列信息:
列名 | 类型 | 描述 |
---|---|---|
database | String | 数据库名 |
table | String | 表名 |
engine | String | 表引擎名 |
is_leader | UInt8 | 副本是否为 leader |
can_become_leader | UInt8 | 副本是否可以被选为 leader |
is_readonly | UInt8 | 副本是否处于只读模式 |
is_session_expired | UInt8 | 与 ZooKeeper 的会话已过期。基本上与 is_readonly 相同 |
future_parts | UInt32 | 尚未完成的 INSERTs 或 merges 的结果数据分块数 |
parts_to_check | UInt32 | 队列中用于验证的数据分块的数量。如果怀疑分块可能已损坏,则将其放入验证队列 |
zookeeper_path | String | ZooKeeper 中表数据的路径 |
replica_name | String | ZooKeeper 中的副本名称,同一张表的不同副本具有不同的名称 |
replica_path | String | ZooKeeper 中复制数据的路径 |
columns_version | Int32 | 表结构的版本号,表示执行 ALTER 的次数 |
queue_size | UInt32 | 等待执行操作的队列的大小。操作包括插入数据块,合并及某些其他操作。它通常与 future_parts 一致 |
inserts_in_queue | UInt32 | 需要插入的数据块的插入数量。插入内容通常会很快复制,如果这个数字很大,则表示有问题 |
merges_in_queue | UInt32 | 等待进行的合并数。有时合并很长,因此该值可能长时间大于零 |
part_mutations_in_queue | UInt32 | 等待突变的数量 |
queue_oldest_time | DateTime | 如果 queue_size 大于0,则显示何时将最早的操作添加到队列中 |
inserts_oldest_time | DateTime | 见 queue_oldest_time |
merges_oldest_time | DateTime | 见 queue_oldest_time |
part_mutations_oldest_time | DateTime | 见 queue_oldest_time |
log_max_index | UInt64 | 通用活跃日志中的最大条目数 |
log_pointer | UInt64 | 副本复制到其执行队列的通用活跃日志中的最大条目数加1。如果 log_pointer 远小于 log_max_index,会出现问题 |
last_queue_update | DateTime | 上次更新队列的时间 |
absolute_delay | UInt64 | 当前副本有几秒钟的延迟 |
total_replicas | UInt8 | 该表的已知副本总数 |
active_replicas | UInt8 | 在 ZooKeeper 中具有会话的该表的副本数(即正在运行的副本数) |
一次只能有一个副本作为 leader。leader 负责选择要执行的后台 merges。可以写入任何可用并在 ZK 中具有会话的副本,无论其是否为 leader。
例如,您可以检查所有内容是否正常运行,如下所示:
SELECT
database,
table,
is_leader,
is_readonly,
is_session_expired,
future_parts,
parts_to_check,
columns_version,
queue_size,
inserts_in_queue,
merges_in_queue,
log_max_index,
log_pointer,
total_replicas,
active_replicas
FROM system.replicas
WHERE
is_readonly
OR is_session_expired
OR future_parts > 20
OR parts_to_check > 10
OR queue_size > 20
OR inserts_in_queue > 10
OR log_max_index - log_pointer > 10
OR total_replicas < 2
OR active_replicas < total_replicas
如果此查询未返回任何内容,则表示一切正常。
该表包含有关当前正在使用的设置的信息,即用于执行您要从 system.settings 表中读取的查询。
列信息:
列名 | 类型 | 描述 |
---|---|---|
name | String | 设置名 |
value | String | 设置值 |
changed | UInt8 | 设置是在配置中显式定义还是显式更改 |
示例:
SELECT name,value,changed FROM system.settings WHERE changed;
该表包含 server 支持的表引擎的描述及其功能支持信息。该表只有一列,表示表引擎的名称。
示例:
select * from system.table_engines limit 5;
该表包含 server 知道的每个表的元数据,分离的表未显示在 system.tables 中。
列信息:
列名 | 类型 | 描述 |
---|---|---|
database | String | 表所在的数据库的名称 |
name | String | 表名 |
engine | String | 表引擎名称(不带参数) |
is_temporary | UInt8 | 表示表是否为临时的标志 |
data_path | String | 文件系统中表数据的路径 |
metadata_path | String | 文件系统中表元数据的路径 |
metadata_modification_time | DateTime | 表元数据的最新修改时间 |
dependencies_database | Array(String) | 数据库依赖 |
dependencies_table | Array(String) | 表依赖(基于当前表的 MaterializedView 表) |
create_table_query | String | 用于创建表的查询 |
engine_full | String | 表引擎的参数 |
partition_key | String | 表中指定的分区键表达式 |
sorting_key | String | 表中指定的排序键表达式 |
primary_key | String | 表中指定的主键表达式 |
sampling_key | String | 表中指定的采样键表达式 |
system.tables 表用于 SHOW TABLES 查询实现。
如果未配置 ZooKeeper,则该表不存在,允许从配置中定义的 ZooKeeper 集群读取数据。该查询在 WHERE 子句中必须具有“path”相等条件。这是 ZooKeeper 中要获取其数据的子代的路径。
查询命令SELECT * FROM system.zookeeper WHERE path ='/ clickhouse';
输出/ clickhouse
节点上所有子级的数据。要输出所有根节点的数据,请写路径='/'
。如果“path”中指定的路径不存在,则会抛出异常。
列信息:
列名 | 类型 | 描述 |
---|---|---|
name | String | 节点名称 |
path | String | 节点路径 |
value | String | 节点值 |
dataLength | Int32 | 值的大小 |
numChildren | Int32 | 后代数 |
czxid | Int64 | 创建节点的事务的 ID |
mzxid | Int64 | 最后更改节点的事务的 ID |
pzxid | Int64 | 最后删除或添加后代的事务的 ID |
ctime | DateTime | 节点创建时间 |
mtime | DateTime | 节点的最后修改时间 |
version | Int32 | 节点版本,节点被更改的次数 |
cversion | Int32 | 添加或删除后代的数量 |
aversion | Int32 | ACL 的更改数量 |
ephemeralOwner | Int64 | 对于临时节点,拥有该节点的会话的 ID |
该表包含有关 MergeTree 表的突变及其进度的信息,每个突变命令由单行表示。
列信息:
列名 | 类型 | 描述 |
---|---|---|
database | String | 应用了突变的数据库名称 |
table | String | 应用了突变的表名称 |
mutation_id | String | 突变 ID |
command | String | 突变命令 |
create_time | DateTime | 该突变命令提交执行的时间 |
block_numbers.partition_id | Array(String) | 分区 ID |
block_numbers.number | Array(Int64) | 块号 |
parts_to_do | Int64 | 完成突变需要突变的数据分块的数量 |
is_done | UInt8 | 突变完成标识 |
latest_failed_part | String | 不能突变的最近分块的名称 |
latest_fail_time | DateTime | 最近一次分块突变失败的时间 |
latest_fail_reason | String | 导致最近的分块突变失败的异常消息 |
该表包含有关 server 配置中定义的磁盘的信息。
列信息:
列名 | 类型 | 描述 |
---|---|---|
name | String | server 配置中的磁盘名称 |
path | String | 文件系统中挂载点的路径 |
free_space | UInt64 | 磁盘上的可用空间(以字节为单位) |
total_space | UInt64 | 磁盘卷(以字节为单位) |
keep_free_space | UInt64 | 应该在磁盘上保持可用空间的磁盘空间量(以字节为单位)。在磁盘配置的 keep_free_space_bytes 参数中定义 |
该表包含有关 server 配置中定义的存储策略和卷的信息。
列信息:
列名 | 类型 | 描述 |
---|---|---|
policy_name | String | 存储策略名称 |
volume_name | String | 存储策略中定义的卷名称 |
volume_priority | UInt64 | 配置中的卷优先级 |
disks | Array(String) | 磁盘名称,在存储策略中定义 |
max_data_part_size | UInt64 | 可以存储在卷磁盘上的数据分块的大小(0 - 无穷) |
move_factor | Float32 | 可用磁盘空间比率。当比率超过配置参数的值时,ClickHouse 开始按顺序将数据移至下一个卷 |
如果存储策略包含一个以上的卷,则每个卷的信息都存储在表的单独一行中。
本页内容是否解决了您的问题?