Clickhouse-常用系统表

 1、system.cluster  

该表记录可用的集群以及其中的服务器信息。

cluster (String) — 集群名称。
shard_num (UInt32) — 集群分片数,从1开始。
shard_weight (UInt32) — 写入数据时分片的相对权重。
replica_num (UInt32) — 分片的副本编号,从1开始。
host_name (String) — 主机名,也可以在配置中指定。
host_address (String) — 从DNS获得的主机IP地址。
port (UInt16) — 用于连接到服务器的端口。
user (String) — 用于连接到服务器的用户。
errors_count (UInt32) — 此主机无法到达副本的次数。
estimated_recovery_time (UInt32) — 副本错误计数归零剩下的秒数,它被认为是恢复正常。

 

2.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) - 表中指定的抽样键表达式。
storage_policy (String) - 存储策略:
MergeTree
Distributed
total_rows (Nullable(UInt64)) - 总行数,如果能够快速确定表中的准确行数,则为Null(包括下面的Buffer表)。
total_bytes (Nullable(UInt64)) - 如果能够快速确定存储上的表的确切字节数,则为总字节数,否则为Null(不包括任何底层存储)。
如果表将数据存储在磁盘上,则返回磁盘上使用的空间(即压缩空间)。
如果表在内存中存储数据,则返回内存中使用的近似字节数。

 

3、system.parts

该表记录MergeTree表的片段信息。

partition (String) – 分区的名称。要了解分区是什么,参考ALTER查询的描述。格式:YYYYMM 按月自动分区。any_string 当手动分区。
name (String) – 数据片段的名称。
active (UInt8) – 指示数据片段是否处于激活状态的标志。如果数据片段是激活的,则在表中可以使用它。否则它是被删除状态。未激活的数据片段在合并后仍然存在。
marks (UInt64) – 标记的数量。要获得数据片段的大概行数,可以用索引粒度乘以标记(通常是8192)(这个提示不适用于自适应粒度)。
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) – 合并树的深度。零意味着当前片段是通过插入创建的,而不是通过合并其他片段创建的。
data_version (UInt64) – 用于确定应用于数据片段变化的数字(变化版本高于data_version)。
primary_key_bytes_in_memory (UInt64) – 主键值使用的内存量(以字节为单位)。
primary_key_bytes_in_memory_allocated (UInt64) – 为主键值保留的内存量(以字节为单位)。
is_frozen (UInt8) – 表明存在分区数据备份的标志。1、备份存在。0,备份不存在。更多详细信息,请参考FREEZE PARTITION
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) – marks_bytes别名。

--查询表容量SQL语句

SELECT
database,
table AS table_name,
sum(rows) AS row_num,
formatReadableSize(sum(bytes_on_disk)) AS  all_size,
formatReadableSize(sum(data_uncompressed_bytes)) AS org_size,
formatReadableSize(sum(data_compressed_bytes)) AS compress_size,
formatReadableSize(sum(bytes_on_disk) - sum(data_compressed_bytes))  AS index_size ,
round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS compress_ratio
FROM system.parts
WHERE database='default'
GROUP BY table order by sum(rows) desc;

 

上图个字段含义:

database:数据库名称
table_name:表名称
row_num: 数据行数
all_size: 表压缩后的总容量(数据容量 + 索引容量)
org_size:表原始容量
compress_size:压缩后的容量(真实占用磁盘空间大小)
index_size: 索引容量
compress_ratio:压缩率

posted @ 2024-03-20 14:56  业余砖家  阅读(69)  评论(0编辑  收藏  举报