SSTables行时间戳分布搞乱了TWCS

时间:2018-05-09 16:30:11

标签: cassandra cassandra-2.1

我们正在运行Cassandra 2.1.14并在几个月之前在我们的一个CF上迁移到TWCS,从那时起,虽然获得了更好的性能,并且每个查询的平均读取量大幅减少,但我们注意到旧的SSTables永远不会被驱逐。 / p>

运行Cassandra的sstableexpiredblockers实用程序我们看到原因是旧的SSTabes的最大时间戳高于甚至新的SSTable的最小时间戳,这意味着即使实际的SSTable完全被墓碑化,Cassandra也不会试图驱逐(我们写了一个小的Java应用程序,直接通过SSTable来确保)。

所以问题是 - 为什么甚至非常新的SSTable都有旧行? 只是为了澄清:我们的代码库永远不会更新行,所有行都有TTL。

另一个问题,鉴于这是我们目前的情况,是否有一种简单的方法可以迫使Cassandra对旧的SSTable进行驱逐?

附件是SSTables及其最小\最大时间戳:

enter image description here

1 个答案:

答案 0 :(得分:0)

因此我们发现问题的根本原因是读取修复和启用推测重试。禁用它们并运行主要压缩一次以删除过时的SSTable并且一切都按预期工作。