历史上检查cassandra中的表格大小

时间:2017-11-02 11:13:35

标签: cassandra cassandra-2.0

我有一张带有太字节数据的Cassandra表(Cassandra版本是2.0),这里是架构的样子

"my_table" (
  key ascii,
  timestamp bigint,
  value blob,
  PRIMARY KEY ((key), timestamp)
)

我想删除一些数据,但在想要估算它将回收多少磁盘空间之前。

不幸的是,JMX指标的统计数据仅在过去两周内可用,因此不太有用。

有没有办法检查某些数据集使用了多少空间(例如时间戳<1000)?

我还想知道是否有办法检查查询结果集大小,以便我可以执行select * from my_table where timestamp < 1000之类的操作,并查看结果占用的字节数。

2 个答案:

答案 0 :(得分:1)

没有机制可以从数据中查看磁盘上的大小,它可以远离请求的协调器以及影响它的影响级别,如压缩和多个sstables,这将使其变得困难。

另请注意,发出删除不会立即减少磁盘空间。 C *不删除数据,sstables是不可变的,不能更改。相反,它会在gc_grace_seconds消失后写入一个墓碑条目。当sstables被合并时,墓碑+数据将合并为墓碑。超过gc_grace_seconds后,在压缩过程中将不再复制墓碑。

gc_grace是为了防止在分布式系统中丢失删除,因为直到修复(应该安排〜每周),并不能绝对保证所有副本都能看到删除。如果副本没有看到删除并删除了逻辑删除,则数据可以返回。

答案 1 :(得分:1)

不,不是真的。

使用sstablemetadata,您可以在mc-####-big-data.db文件中找到逻辑删除丢弃时间,最小时间戳和最大时间戳。

此外,如果您的硬盘空间不足,请考虑nodetool cleanupnodetool clearsnapshot,然后再考虑nodetool repair