clIckhouse 查询数据库(database)、分区(part)占用空间大小、行数

523 阅读1分钟

system.parts

在 ClickHouse 中,system.parts 是一个系统表,用于存储有关各个表分区的信息,包括表名、数据库名、分区键值、分区路径、数据范围等。以下是 system.parts 表的简化结构:

  • table:表名
  • database:数据库名
  • partition:分区名称
  • active:标识分区是否仍然活动
  • marks:标记数
  • rows:行数
  • bytes_on_disk:该分区在磁盘上占用的字节数
  • data_compressed_bytes:压缩后的数据占用的字节数
  • total_rows:总行数
  • modification_time:分区最后修改时间
  • 其他列可能会提供更多关于分区属性和统计信息的细节

可以使用以下 SQL 查询来查看 system.parts 表的结构(列信息):

DESCRIBE system.parts;

这将返回有关 system.parts 表结构的详细信息,包括每个列的名称、数据类型和其他相关信息。 image.png

磁盘空间占用

通过查询系统表 system.parts,可以查看每个分区的 bytes_on_disk 列的值,以了解每个分区实际占用的磁盘空间大小。

SQL:

SELECT 
    database,
    formatReadableSize(sum(bytes_on_disk)) AS total_size
FROM system.parts
WHERE database != 'system'
GROUP BY database

行数统计

SELECT 
    database,
    table,
    sum(rows) AS rows_count
FROM system.parts
WHERE database = 'system'
GROUP BY 
    database,
    table
ORDER BY rows_count DESC

image.png

分区数统计

SELECT 
    database,
    table,
    count() AS parts_count
FROM system.parts
WHERE database = 'system'
GROUP BY 
    database,
    table
ORDER BY parts_count DESC

image.png