system.log中的墓碑扫描

fivyi3re  于 2021-06-14  发布在  Cassandra
关注(0)|答案(2)|浏览(415)

我有一个cassandra集群,删除用例更少。我在system.log中找到“read 10 live and 5645464 tombstones cells in keyspace.table”这是什么意思?请帮助理解。
谢谢。

k2arahey

k2arahey1#

在使用cassandra时需要记住的一点是,tombstones单元格与删除没有直接关联。
当你插入 null 当执行插入时,cassandra在内部将该属性/单元格标记为逻辑删除。所以,即使你没有太多的删除发生,你最终可能会有大量的墓碑。简单易行的解决办法是不插入 null 插入时属性的值。
根据这份声明 Read 10 live and 5645464 tombstones cells in keyspace.table 去,可能有一个正在扫描的查询的表扫描 10 细胞和 5645464 墓碑数(带有 null 价值),而这样做是我猜测的。需要了解正在执行的查询类型,以便更深入地了解这一点。

pn9klfpd

pn9klfpd2#

对Cassandra来说,所有记录的信息都是不变的。这意味着当您有一个delete操作时(使用delete语句显式地或使用生存时间)[ TTL ]子句),数据库将添加另一个带有名为tombstone的特殊标志的记录。所有这些记录将保留在数据库中,直到 gc_grace_seconds 时间已经过去了;默认值为10天。
在您的例子中,引擎发现检索到的大多数记录都已被删除,但它们仍在等待gc\u grace\u秒,以便让压缩回收空间。解决这个问题的一个可能办法是减少 gc_grace_seconds 为了那张table。
更多信息,请参考这篇文章从最后的泡菜。

相关问题