cassandra 是否可以估计表中墓碑的百分比?

xiozqbni  于 2023-08-04  发布在  Cassandra
关注(0)|答案(2)|浏览(177)

我目前正在编写一个脚本来计算目标表中墓碑的百分比,根据阈值百分比,我想提供用户选项运行压缩。那么,有没有可能估计出table上墓碑的百分比?这是怎么可能的?在我的研究过程中,我发现了system.compaction_history表,其中包含table_name、bytes_in和bytes_out列,我可以使用这些列做出决策,但不确定我的逻辑是否正确。
提前感谢您的帮助。
问候你,杰

xqk2d5yq

xqk2d5yq1#

请改用sstablemetadata。您将获得列的值:

Estimated droppable tombstones: 0.9188263888888889

字符串
但是,你必须小心,因为它不是一个百分比的droppable。它是对SSTable中可删除的tombstones与不可删除的列的比率的估计。它表示在压实过程中可以移除的墓碑相对于存在的不可掉落的柱的总数的比例。

enxuqcxy

enxuqcxy2#

确定墓碑的百分比需要进行全表扫描,这在Cassandra中是一个糟糕的想法,因为这种操作无法扩展。
sstablemetadata这样的SSTable工具可以提供可丢弃的墓碑的估计比率,但它与获得墓碑的数量不同。在任何情况下,它提供的比率都是一个非常粗略的估计,因为用于计算比率的算法使用估计的列数,而不是分区或行中的实际列数,正如我在对this question on DBA Stack Exchange的回应中所解释的那样。
更重要的是,你没有问的问题的答案是,手动触发一个主要的压缩从来都不是一个好主意。在大多数情况下,它会导致更多的问题比你试图解决。
我在why major compactions are a bad idea的文章中解释了这一点。相反,您需要做的是解决根本原因。干杯!

相关问题