Мы используем Cassandra 2.1.14 и перешли на TWCS на одном из наших CF несколько месяцев назад, и с тех пор, несмотря на повышение производительности и резкое сокращение среднего количества считываемых таблиц SSTable на запрос, мы заметили, что старые таблицы SSTable никогда не удаляются.
Запустив утилиту Cassandra sstableexpiredblockers, мы видим, что причина в том, что максимальная временная метка старых SSTabes выше, чем даже минимальная временная метка нового SSTable, что означает, что Cassandra не будет пытаться выселить, даже если фактические SSTables полностью захоронены (мы написали крошечное java-приложение, которое прошло через SSTable непосредственно, чтобы убедиться).
Итак, вопрос в том, почему даже в очень новых таблицах SSTable есть старые строки? Просто для уточнения: наша кодовая база НИКОГДА не обновляет строки, и ВСЕ строки имеют TTL.
Другой вопрос, учитывая, что это наша текущая ситуация, есть ли простой способ заставить Cassandra запустить выселение на старых SSTables?
Прикреплены SSTables и их минимальная/максимальная отметка времени: