ClickHouse 的系统表(十八)

​ 本文来源: ( https://www.cnblogs.com/traditional/tag/ClickHouse:一款速度快到让人发指的列式存储数据库/ )


楔子

我们知道 ClickHouse 自带两个库,分别是 default 和 system,default 是默认的数据库,我们创建表的时候如果不指定库名,那么默认会在 default 下创建。而 system 则是系统库,里面存放了大量与系统相关的表,通过这些系统表我们可以查看服务器的所有状态信息。

1
2
use system;
show tables;

img

总共有 69 个系统表,通过这些系统表,我们可以牢牢把控 ClickHouse 服务端的运行状态。下面来看看就来挑几个介绍一下。

system.asynchronous_metrics

ClickHouse 在后台会定期对一些指标进行计算,得到内存的使用量,该表负责存储相关指标以及对应的值。

字段:

  • metric:指标名,String 类型
  • value:指标值,Float64 类型

img

system.asynchronous_metric_log

和 system.asynchronous_metric 作用相同,但是多了一些时间字段。

字段:

  • event_date:日期,Date 类型
  • event_time:时间,DateTime 类型
  • event_time_microseconds:带毫秒的时间,DateTime64 类型
  • name:指标名,String 类型
  • value:指标值,Float64 类型

img

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 类型

img

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 类型

img

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 类型

img

system.disks

负责记录配置文件中定义的磁盘信息

字段:

  • name:磁盘名称,String 类型
  • path:在物理文件系统中的挂载点,String 类型
  • free_space:磁盘的可用空间,UInt64 类型
  • total_space:磁盘的可用空间,UInt64 类型
  • keep_free_space:磁盘应保留的空闲可用空间,通过 keep_free_space_bytes 标签定义,UInt64 类型

img

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 类型

img

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 权限管理的时候,还会再介绍几个系统表。