我对估计的可丢弃墓碑值的理解是 = (Number of columns where tombstones passed gc_grace_seconds/Number of columns)
。
但是在某些 sstablemetadata 输出中,我可以看到该值大于 1。这怎么可能呢?在特定的时间点,让我们假设所有列都变成墓碑,它通过了 gc_grace_seconds 然后该值将为 1。那么它随后如何大于 1 ......这取决于时间吗?即随着时间的推移,价值会增加吗?
我对估计的可丢弃墓碑值的理解是 = (Number of columns where tombstones passed gc_grace_seconds/Number of columns)
。
但是在某些 sstablemetadata 输出中,我可以看到该值大于 1。这怎么可能呢?在特定的时间点,让我们假设所有列都变成墓碑,它通过了 gc_grace_seconds 然后该值将为 1。那么它随后如何大于 1 ......这取决于时间吗?即随着时间的推移,价值会增加吗?
用于计算可掉落墓碑比率的输入是基于估计值而非绝对值,因此超过 . 并不罕见
1.0
。您可能认为“列数”是一个固定数字,但计算可放置比率的公式使用的是估计的列数——而不是固定数。列计数本身是一个估计值,因为它基于每个分区的估计单元格计数,因此它不是绝对的。
如果您有兴趣,可以在 中查看该比率是如何计算的
StatsMetadata.getEstimatedDroppableTombstoneRatio()
。在其中你会看到甚至estimatedCellPerPartitionCount
不是一个单一的数量,而是估计的直方图(见EstimatedHistogram.java
类)。干杯!