clickhouse 对 system 表的介绍在 https://clickhouse.com/docs/en/operations/system-tables/
aggregate_function_combinators
build_options
存储了clickhouse的编译信息,包括 clickhouse 版本号,编译用的cxx版本等
SELECT * FROM system.build_options LIMIT 20
clusters
本机地址
- localhost 是一个域名,在过去它指向 127.0.0.1 这个IP地址。在操作系统支持 ipv6 后,它同时还指向ipv6 的地址 ::1
- 127.0.0.1是代表自己机器的回路地址,无论是否联网,自己机器都是127.0.0.1
- 127网段是保留区段,任何ping向保留区段127的都会指向127.0.0.1
域名与IP的映射存放在 /etc/hosts
使用 SELECT * FROM system.clusters
查询可以看到 clickhouse 默认会创建一个测试用的单机集群
默认的集群配置在 /etc/clickhouse-server/config.xml
的 remote_servers 节点里
collations
保存了 “语言代码” 和 “对应的语言(国家/地区)”
SELECT * FROM system.collations
ORDER BY name DESC LIMIT 30
拥有超过一个地区编号的语种有8个,分别是:塞尔维亚语、中文、英语、旁遮普族语、波斯尼亚、法语等
SELECT count(name) AS cnt, language FROM system.collations
GROUP BY language
HAVING cnt > 1
ORDER BY cnt DESC
地区编码总计132个,语言总共107个
SELECT count(name), count(DISTINCT language) FROM system.collations
SELECT count(name), uniqExact(language) FROM system.collations
SELECT count(name), uniq(language) FROM system.collations
columns
用来存储表中所有的列的相关信息(列名,类型,注释,是否分区键,是否排序键,是否主键,是否取样键)
SELECT database,table,position,name,type,comment,
is_in_partition_key,is_in_sorting_key,is_in_primary_key,is_in_sampling_key
FROM system.columns
WHERE database = 'system'
ORDER BY database ASC,table ASC,position ASC
LIMIT 50;
contributors
存储了所有贡献者的名字
data_type_families
存储 clickhouse 中可用的数据类型
databases
SHOW DATABASES
可以查看有多少个数据库
SELECT * FROM system.databases
不仅可以看到有多少数据库,还可以查看它们的存储路径
disks
记录 clickhouse 数据存储的目录,以及该分区“可用空间大小“及”总大小“
errors
这是用 dbeaver 查询的表结构
errors 表用来存储 clickhouse 启动以来发生过的所有错误信息
events
用来存储系统中发生的事件数的信息(event 是事件名,value 是事件自clickhouse启动以来,总共发生的次数)
formats
存储 clickhouse 中支持导入导出的数据格式/类型
functions
存储 clickhouse 中可用的函数
例如:
- argMax(name,version) 在Group的时候,返回version最大的那行的name列
- rowNumberInAllBlocks 用来获取当前行号(从0开始)
licenses
位于 ClickHouse 源的 contrib 目录中的第三方库的许可证
- library_name (String) — 库的名称, 它是与之连接的许可证
- license_type (String) — 许可类型-例如Apache, MIT
- license_path (String) — 带有许可文本的文件的路径
- license_text (String) — 许可协议文本
merge_tree_settings
建表语句最后 SETTINGS 配置中可用带的参数
metrics
numbers
存储了从0开始递增到无穷的所有整数
WITH 10 AS n
SELECT * FROM numbers(n);
-- 等价于
WITH 10 AS n
SELECT * FROM system.numbers LIMIT n;
numbers_mt
存储了从0开始递增到无穷的所有整数
one
固定存储一个0
part_log
parts
parts_columns
privileges
query_log
query_thread_log
replicated_merge_tree_settings
session_log
settings
table_engines
table_functions
tables
使用 USE <database>
可以切换当前数据库
使用 SHOW TABLES
可以查看当前数据库下有哪些表,可以加 WHERE
或者 LIMIT
关键字进行筛选
使用 LIKE 谓词,可以仅查看匹配的表名
使用 SHOW CREATE TABLE <tableName>
可以查看建表语句
对于 system 数据库下的表,可能无法使用 SHOW CREATE TABLE <tableName>
查看建表语句
此时,我们可以使用 desc <tableName>
来查看表中的各个字段信息
tables表的常用字段如下
- name 也是table字段的别名,指代数据表名
- uuid 是建表时随机生成的 8-4-4-12字符串编码
- is_temporary 用来指示是否是临时表
- data_paths 是数据位置(文件夹名字和uuid一样)
- metadata_path 是存放元数据的sql文件路径
- metadata_modifucation_time 会记录每次修改元数据表的时间
- create_table_query 存储建表语句
- engine 指的是表引擎
- engine_full 包括表引擎之后的参数(比如 ORDER BY、SETTINGS 等)
- partition_key 分区键
- sorting_key 排序键
- primary_key 主键
- sampling_key 采样键
- storage_policy 存储策略
- total_rows 总行数
- total_bytes 表大小
- comment 表注释
time_zones
ClickHouse 服务器支持的时区列表
时区可以在 /etc/clickhouse-server/config.xml
文件中的 timezone
字段里进行配置。如果不配置,默认采用系统时区
user_directories
用户目录
/etc/clickhouse-server/users.xml
是用户自定义配置文件/var/lib/clickhouse/access
下面是5个空的列表文件
zeros
存储了无数多个0
zeros_mt
存储了无数多个0