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

如何计算Cassandra中keyspace与table的总大小?求方法指导

精准查询Cassandra Keyspace与表大小的方法

我经常碰到开发者纠结nodetool输出里哪个字段对应真实的存储大小,这就给你梳理几个靠谱的方法,帮你快速定位数据:

1. 用nodetool tablestats(或旧版cfstats)精准获取

默认跑nodetool tablestats会输出所有表的信息,自然杂乱。你可以直接指定Keyspace甚至表来缩小范围,比如:

# 查询单个表的统计
nodetool tablestats my_keyspace.my_table

# 查整个Keyspace下所有表的统计
nodetool tablestats my_keyspace

重点关注这几个核心字段:

  • Live Data Size: 实际有效的业务数据大小(已经排除墓碑、标记删除的数据)
  • Total Data Size: 包含所有数据(包括墓碑、压缩前的旧版本数据等)
  • Space Used (Live): 磁盘上实际占用的有效数据空间(对应Live Data的磁盘存储)
  • Space Used (Total): 磁盘总占用空间(包括压缩遗留文件、未清理的墓碑等)

如果要算整个Keyspace的总大小,把该Keyspace下所有表的对应字段加起来即可。

2. 通过CQL查询系统表获取结构化数据

如果你需要更灵活的统计(比如批量导出、计算汇总),直接查Cassandra的系统表更方便:

查询单个表的大小

SELECT 
  keyspace_name, 
  table_name, 
  live_space_in_bytes / 1024 / 1024 AS live_size_mb,
  total_space_in_bytes / 1024 / 1024 AS total_size_mb
FROM system_schema.tables 
WHERE keyspace_name = 'my_keyspace' AND table_name = 'my_table';

汇总整个Keyspace的总大小

SELECT 
  keyspace_name,
  SUM(live_space_in_bytes) / 1024 / 1024 AS total_live_size_mb,
  SUM(total_space_in_bytes) / 1024 / 1024 AS total_total_size_mb
FROM system_schema.tables 
WHERE keyspace_name = 'my_keyspace'
GROUP BY keyspace_name;

注意:system_schema.tables里的统计是单节点本地的数据,如果要算集群总大小,需要在每个节点执行查询后汇总,或者如果数据分布均匀,可以用单节点数据乘以节点数估算。

3. 额外小提示

  • 如果你用的是Cassandra 4.0+,nodetool tablestats还支持--format json参数,输出JSON格式的数据,方便用脚本解析汇总。
  • 区分"数据大小"和"磁盘占用":前者是逻辑数据量,后者是实际磁盘消耗,因为Cassandra的压缩、墓碑机制会让磁盘占用略大于逻辑数据量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:03:31