Minha compreensão do valor estimado das lápides droppable é = (Number of columns where tombstones passed gc_grace_seconds/Number of columns)
.
Mas em alguma saída sstablemetadata, pude ver que o valor é maior que 1. Como isso é possível? Em um ponto específico no tempo, vamos supor que todas as colunas se tornem tombstone, que passaram gc_grace_seconds, então o valor seria 1. Então, como é mais de 1 subseqüentemente... esse tempo depende? ou seja, com o passar do tempo, o valor será aumentado?
As entradas usadas para calcular a proporção de lápides que podem ser soltas são baseadas em estimativas, não em valores absolutos, portanto, não é incomum que sejam mais de
1.0
.Você pode pensar em "número de colunas" como sendo um número fixo, mas a fórmula para calcular a taxa de descarte usa uma contagem de colunas estimada - não uma contagem fixa. A própria contagem de colunas é uma estimativa porque se baseia na contagem estimada de células por partição, portanto, não é absoluta.
Se estiver interessado, você pode ver como a proporção é calculada em
StatsMetadata.getEstimatedDroppableTombstoneRatio()
. Nele você verá que mesmo oestimatedCellPerPartitionCount
não é uma quantidade única e sim um histograma de estimativas (veja aEstimatedHistogram.java
aula). Saúde!