一、 系统表简介
系统表提供以下信息:
- ClickHouse 状态、进程和环境
- ClickHouse 的内部流程
1. 系统表特点
- 位于system数据库中
- 数据只读
- 不能drop或alter,但可以detach
- 大多数系统表将其数据存储在内存中,由ClickHouse在启动时创建
- 名字带_log的系统日志表存储在文件系统中(metric_log、query_log、query_thread_log、trace_log、part_log、crash_log和text_log)为MergeTree引擎表
- 如果从文件系统中删除_log表,ClickHouse 会在下次数据写入时自动创建空表
- 如果系统表结构在新版本中发生更改,ClickHouse 会重命名当前表并创建一个新表
2. 系统日志表说明及配置
系统日志表可以通过/etc/clickhouse-server/config.xml文件配置,或者在/etc/clickhouse-server/config.d/目录下创建一个与表同名的配置文件
可以配置信息如下:
- database:系统日志表所属的数据库。此选项现已弃用,所有系统日志表都在 database 下system
- table:插入数据的表名
- partition_by:分区表达式
- ttl:过期配置(默认情况下,表增长是无限的。要控制表的大小,可以使用TTL设置来删除过时的日志记录)
- flush_interval_milliseconds:刷数据到磁盘的时间间隔
- engine:提供带参数的完整引擎表达式(以 ENGINE= 开头)。此选项与partition_by和ttl参数相矛盾,如果一起设置,服务器将抛异常并退出。
一个例子:
<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>
</query_log>
</clickhouse>
二、 主要系统表及功能
-
asynchronous_metrics:包含在后台定期计算的指标
- asynchronous_metric_log:保存asynchronous_metrics的历史信息,默认启用,每分钟保存一次
- clusters:集群信息
-
columns:表中的列信息
- crash_log:ClickHouse 严重错误(fatal errors)的堆栈记录。该表默认不存在,只在发生严重错误时会自动创建
- current_roles:当前用户的活跃角色,set role命令可以改变该表内容
- data_skipping_indices:表中跳数索引(稀疏索引)信息
- data_type_families:ClickHouse支持的数据类型
- databases:数据库信息
-
detached_parts:MergeTree引擎表分离part的信息,reson字段指定detach的原因
-
dictionaries:保存外部字典(External Dictionaries)信息
- disks:数据目录磁盘信息,总空间、剩余空间、磁盘路径等
- distributed_ddl_queue:分布式ddl语句(带on cluster的)执行记录
- distribution_queue:包含队列中待发送到分片的本地文件的信息。这些本地文件包含以异步模式将新数据插入分布式表而创建的new parts
- errors:包含错误代码及其被触发的次数
- events:自 ClickHouse 服务器启动以来,各类事件发生的次数(例如一共执行了多少query)
- functions:包括普通函数及聚集函数信息
- grants:账号授权情况
- INFORMATION_SCHEMA:元数据视图,其数据来自system.columns, system.databases, system.tables 几个系统表
- merge_tree_settings:MergeTree引擎表配置信息
- merges:MergeTree 系列引擎表当前正在处理的merge和mutation(update和delete)的信息
- metrics: 包含可以立即计算或具有当前值的指标,此表始终是最新的
- metric_log:包括来自system.metrics 和 system.events两个表的数据,周期性刷入磁盘
- mutations:包含MergeTree引擎表执行的mutation信息及进度,每行记录代表一条mutation命令
- one:只有一行的表,类似oracle的dual
- part_log:仅当在配置文件中指定了part_log信息时才会创建该表。此表包含有关MergeTree系列表中data parts发生的事件的信息,例如添加或合并数据。
- parts:MergeTree引擎表的part信息
- parts_columns:MergeTree引擎表的part及列信息
- processes:正在执行的会话信息(show processlist命令的源表)
- query_log:包含查询信息的日志
- query_thread_log:包含查询和线程信息的日志
- query_views_log:包含有关运行查询时执行的依赖视图的信息
- quota_limits:包含有关所有配额的最大值及间隔信息
- quota_usage:当前用户使用的配额:用了多少、还剩多少
- quotas:支持配置的配额信息
- quotas_usage:所有用户使用的配额
- replicas:包含驻留在本地服务器上的复制表的信息和状态
- replicated_fetches:包含当前运行的后台fetches信息
- replication_queue:包含有关存储在 ClickHouse Keeper 或 ZooKeeper 中的复制队列中的任务信息,用于ReplicatedMergeTree引擎表
- role_grants:包含用户和角色的角色授权。要向此表添加条目,请使用GRANT role TO user
- roles:包含有关已配置角色的信息
- row_policies:包含行策略信息,以及使用该行策略的角色和/或用户列表
- session_log:包含有关所有成功和失败的登录和注销事件的信息
- settings:包含有关当前用户的会话设置的信息
- stack_trace:包含所有服务器线程的堆栈跟踪
- storage_policies:包含有关在服务器配置中定义的存储策略和卷的信息
- table_engines:包含服务器支持的表引擎的描述及其功能支持信息
- tables:包含每个表的元数据
- text_log:包含日志记录条目。写入此表的日志记录级别由text_log.level参数设置
- time_zones:包含 ClickHouse 服务器支持的时区列表,可能因版本而异
- users:用户列表
- zookeeper:除非配置了ClickHouse Keeper或ZooKeeper,否则该表不存在。该表包含配置的zookeeper集群数据,查询必须具有path =或path IN 的WHERE条件
- zookeeper_log:包含有关向 ZooKeeper 服务器请求的参数和来自它的响应的信息。
参考