You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SQL查询ClickHouse中S3等磁盘的存储空间占用情况

问题原因说明

  • 查询system.disks得到S3磁盘已用空间为0:S3属于远程对象存储,ClickHouse默认不会主动扫描统计远程存储的总空间与空闲空间,因此该表返回的S3相关空间计算结果不符合实际。
  • 查询system.tables无法关联磁盘:该表仅统计单表总大小,没有存储磁盘的关联字段,无法匹配数据存储位置。

正确查询方案

ClickHouse的system.parts系统表存储了所有MergeTree系列表的分区明细,包含disk_name(数据所在磁盘名)字段,是实现需求的核心查询表。

1. 查询所有磁盘的存储空间占用

SELECT
    disk_name,
    sum(data_compressed_bytes) / pow(10,9) AS compressed_used_Gb,
    sum(data_uncompressed_bytes) / pow(10,9) AS uncompressed_used_Gb,
    count(DISTINCT concat(database, '.', table)) AS table_num
FROM system.parts
WHERE active = 1
GROUP BY disk_name
ORDER BY compressed_used_Gb DESC;

说明:该查询统计所有活跃分区的实际占用,支持本地磁盘、S3等所有类型的存储盘,结果准确

2. 查询单表对应磁盘的存储占用

SELECT
    database,
    table,
    disk_name,
    sum(data_compressed_bytes) / pow(10,9) AS compressed_used_Gb
FROM system.parts
WHERE active = 1
-- 可取消下方注释筛选指定库
-- AND database IN ('default', 'test')
GROUP BY database, table, disk_name
ORDER BY database, table, compressed_used_Gb DESC;

说明:如果表配置了分层存储策略,数据分散在多个磁盘上,该查询也能展示同一张表在不同磁盘的空间分布

内容的提问来源于stack exchange,提问作者Pierre Louis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:24:03