如何列出单节点Cassandra实例中占用空间最大的表?
找出Cassandra单节点实例中占用空间最大的表
针对单节点的Cassandra测试实例,有两种简单直接的方法可以定位占用空间最大的表:
方法1:使用nodetool tablestats命令
这是Cassandra自带的工具,能直接输出各表的详细统计信息,包括空间占用:
- 登录到Cassandra服务器,执行命令:
nodetool tablestats - 在输出结果中,找到每个表对应的
Space used (live)(实际存活数据占用空间)和Space used (total)(包含已标记删除数据的总占用空间)字段。 - 对比所有表的这两个数值,就能找出占用空间最大的表。如果需要更清晰的排序,可以把输出内容导入文本编辑器,或者用管道命令过滤排序:
nodetool tablestats | grep -E "(Keyspace :|Table :|Space used)" | grep -B2 "Space used"
方法2:直接查看数据目录的磁盘占用
Cassandra的数据默认存储在/var/lib/cassandra/data目录下(如果部署时修改过路径,替换为对应路径即可),每个Keyspace对应一个子目录,每个表又对应Keyspace下的一个子目录:
- 执行磁盘统计命令:
du -sh /var/lib/cassandra/data/*/* - 命令会输出每个表目录的总占用空间,Linux/Unix系统可以追加排序参数,按人类可读的大小排序后快速定位最大表:
du -sh /var/lib/cassandra/data/*/* | sort -h
注意事项
- 执行
TRUNCATE命令后,Cassandra会标记数据为删除,但实际磁盘空间回收需要等待compaction完成。如果需要立即回收空间,可以在TRUNCATE后执行nodetool compact <keyspace_name> <table_name>手动触发压缩。 - 因为是测试数据库,TRUNCATE操作风险较低,但执行前务必确认表名无误,避免误删重要数据。
内容的提问来源于stack exchange,提问作者darrin
相关产品推荐
相关产品推荐

