ClickHouse 的系统表
楔子
我们知道 ClickHouse 自带两个库,分别是 default 和 system,default 是默认的数据库,我们创建表的时候如果不指定库名,那么默认会在 default 下创建。而 system 则是系统库,里面存放了大量与系统相关的表,通过这些系统表我们可以查看服务器的所有状态信息。
use system;
show tables;
总共有 69 个系统表,通过这些系统表,我们可以牢牢把控 ClickHouse 服务端的运行状态。下面来看看就来挑几个介绍一下。
system.asynchronous_metrics
ClickHouse 在后台会定期对一些指标进行计算,得到内存的使用量,该表负责存储相关指标以及对应的值。
字段:
metric:指标名,String 类型
value:指标值,Float64 类型
system.asynchronous_metric_log
和 system.asynchronous_metric 作用相同,但是多了一些时间字段。
字段:
event_date:日期,Date 类型
event_time:时间,DateTime 类型
event_time_microseconds:带毫秒的时间,DateTime64 类型
name:指标名,String 类型
value:指标值,Float64 类型
system.clusters
老熟人了这个,负责存储配置文件中的可用集群信息。
字段:
cluster:集群名称,String 类型
shard_num:集群中的第几个分片,从 1 开始,UInt32 类型
shard_weight:分片的权重,UInt32 类型
replica_num:一个分片中的第几个副本,从 1 开始,UInt32 类型
host_name:副本所在节点的主机名,String 类型
host_address:副本所在节点的 IP 地址,String 类型
port:副本所在节点的端口,UInt16 类型
is_local:是否为本地节点(和当前执行 SELECT ... FROM syst.clusters 的节点是否是同一个节点),UInt8 类型
user:连接至服务端的用户,String 类型
default_database:默认数据库,String 类型
errors_count:该节点连接副本失败的次数,UInt32 类型
slowdowns_count:当使用对冲请求建立连接时,导致更改副本变慢的次数,UInt32 类型
estimated_recovery_time:距离副本错误归零并被认为恢复正常还剩多少秒,UInt32 类型
system.columns
非常常用的一张表,负责存储表的字段信息。
字段:
database:数据库名,String 类型
table:表名,String 类型
name:字段名,String 类型
type:字段的类型,String 类型
position:字段在表中位于第几列,UInt64 类型
default_kind:默认值表达式类型,如 DEFAULT、MATERIALIZED、ALIAS,如果没有定义则为空字符串,String 类型
default_expression:默认值表达式的值,如果没有定义则为空字符串,String 类型
data_compressed_bytes:该列数据在压缩之后的大小(字节),UInt64 类型
data_uncompressed_bytes:该列数据未压缩时的大小(字节),UInt64 类型
marks_bytes:标记的大小(字节),UInt64 类型
comment:字段的注释,String 类型
is_in_partition_key:该列是否在分区表达式中,UInt8 类型
is_in_sorting_key:该列是否在排序键表达式中,UInt8 类型
is_in_primary_key:该列是否在主键表达式中,UInt8 类型
is_in_sampling_key:该列是否在 sampling key 表达式中,UInt8 类型
compression_codec:压缩器的名称,String 类型
system.crash_log
负责记录发生致命错误时的堆栈跟踪信息,默认情况下 system 库中不存在该表,只有在发生致命错误时该表才会创建。
字段:
event_date:错误发生日期,Date 类型
event_time:错误发生时间,DateTime 类型
timestamp_ns:错误发生时的时间戳,UInt64 类型
signal:信号值,Int32 类型
thread_id:错误发生时的线程 ID,UInt64 类型
query_id:错误发生时的查询 ID,也就是执行哪个查询发生了致命错误,String 类型
trace:崩溃时的堆栈跟踪,每个元素都是 ClickHouse 服务进程中的虚拟内存地址,Array(UInt64) 类型
trace_full:崩溃时的堆栈跟踪,每个元素在 ClickHouse 服务进程中都包含一个被调用的方法,Array(String) 类型
version:ClickHouse 服务器版本,String 类型
reversion:ClickHouse 服务器版本,UInt32 类型
build_id:编译器生成的 BuildID,String 类型
system.data_skipping_indices
负责记录所有表中已存在的跳数索引(二级索引)
字段:
database:数据库名,String 类型
table:表名,String 类型
name:索引名,String 类型
type:索引类型,String 类型
expr:索引计算的表达式,String 类型
granularity:索引粒度,UInt64 类型
system.databases
负责记录已存在的数据库的信息(当然用户可以看到的数据库)
字段:
name:数据库名称,String 类型
engine:定义数据库时所使用的引擎,String 类型
data_path:该数据库下数据表的物理存储路径,String 类型
metadata_path:数据表的元数据的存储路径,String 类型
uuid:数据库对应的 UUID,每个数据库在创建的时候都会有一个 UUID,UUID 类型
system.disks
负责记录配置文件中定义的磁盘信息
字段:
name:磁盘名称,String 类型
path:在物理文件系统中的挂载点,String 类型
free_space:磁盘的可用空间,UInt64 类型
total_space:磁盘的可用空间,UInt64 类型
keep_free_space:磁盘应保留的空闲可用空间,通过 keep_free_space_bytes 标签定义,UInt64 类型
system.distributed_ddl_queue
负责记录执行过的分布式 DDL 查询
字段:
entry:query id,String 类型
host_name:执行分布式 DDL 查询的节点的主机名,String 类型
host_address:执行分布式 DDL 查询的节点的 IP 地址,String 类型
port:执行分布式 DDL 查询的节点监听的端口,UInt16 类型
status:查询的执行状态,Enum8 类型
cluster:集群名称,String 类型
query:执行的 query,String 类型
initiator:执行查询的节点,String 类型
query_start_time:查询开始时间,DateTime 类型
query_finish_time:查询结束时间,DateTime 类型
query_duration_ms:查询执行所花费的时间(毫秒),UInt64 类型
exception_code:来自 ZooKeeper 的异常码,Enum8 类型
system.tables
负责记录已存在的所有表的元数据信息
字段:
database:数据库名,String 类型
name:表名,String 类型
uuid:创建表时生成的 UUID,UUID 类型
engine:表使用的引擎,String 类型
is_temporary:是否是临时表,UInt8 类型
data_paths:表数据在文件系统中的物理路径,string 类型
metadata_path:表元数据在文件系统中的物理路径,String 类型
metadata_modification_time:表元数据最近一次的修改时间,DateTime 类型
dependencies_database:数据库依赖关系,Array(String) 类型
dependencies_table:表依赖关系,针对物化视图,Array(String) 类型
create_table_query:创建该表时的 SQL 语句,String 类型
engine_full:表引擎的参数,String 类型
partition_key:分区键表达式,String 类型
sorting_key:排序键表达式,String 类型
primary_key:主键表达式,String 类型
sampling_key:sampling key 表达式,String 类型
storage_policy:存储策略,String 类型
total_rows:数据表的总行数,Nullable(UInt64)
total_bytes:数据表的总大小。如果表存储在磁盘上,返回使用磁盘空间(压缩之后的);如果表存储在内存中,返回使用的内存大小,单位字节,Nullable(UInt64) 类型
lifetime_rows:自服务启动以来,插入的数据的总行数,仅适用于 Buffer 表,Nullable(UInt64) 类型
lifetime_bytes:自服务启动以来,插入的数据所占的总字节数,仅适用于 Buffer 表,Nullable(UInt64) 类型
comment:表注释
我们使用 show tables 等价于 SELECT * FROM system.tables WHERE database = 'xxx'。
小结
以上我们就介绍了一些系统表,当然 ClickHouse 中的系统表远不止我们说的这些,更多内容可以前往官网查看,写的还是比较详细的。当然我们后面在说 ClickHouse 权限管理的时候,还会再介绍几个系统表。
如果觉得文章对您有所帮助,可以请囊中羞涩的作者喝杯柠檬水,万分感谢,愿每一个来到这里的人都生活愉快,幸福美满。
微信赞赏
支付宝赞赏