我有一个cassandra集群,删除用例更少。我在system.log中找到“read 10 live and 5645464 tombstones cells in keyspace.table”这是什么意思?请帮助理解。谢谢。
k2arahey1#
在使用cassandra时需要记住的一点是,tombstones单元格与删除没有直接关联。当你插入 null 当执行插入时,cassandra在内部将该属性/单元格标记为逻辑删除。所以,即使你没有太多的删除发生,你最终可能会有大量的墓碑。简单易行的解决办法是不插入 null 插入时属性的值。根据这份声明 Read 10 live and 5645464 tombstones cells in keyspace.table 去,可能有一个正在扫描的查询的表扫描 10 细胞和 5645464 墓碑数(带有 null 价值),而这样做是我猜测的。需要了解正在执行的查询类型,以便更深入地了解这一点。
null
Read 10 live and 5645464 tombstones cells in keyspace.table
10
5645464
pn9klfpd2#
对Cassandra来说,所有记录的信息都是不变的。这意味着当您有一个delete操作时(使用delete语句显式地或使用生存时间)[ TTL ]子句),数据库将添加另一个带有名为tombstone的特殊标志的记录。所有这些记录将保留在数据库中,直到 gc_grace_seconds 时间已经过去了;默认值为10天。在您的例子中,引擎发现检索到的大多数记录都已被删除,但它们仍在等待gc\u grace\u秒,以便让压缩回收空间。解决这个问题的一个可能办法是减少 gc_grace_seconds 为了那张table。更多信息,请参考这篇文章从最后的泡菜。
TTL
gc_grace_seconds
2条答案
按热度按时间k2arahey1#
在使用cassandra时需要记住的一点是,tombstones单元格与删除没有直接关联。
当你插入
null
当执行插入时,cassandra在内部将该属性/单元格标记为逻辑删除。所以,即使你没有太多的删除发生,你最终可能会有大量的墓碑。简单易行的解决办法是不插入null
插入时属性的值。根据这份声明
Read 10 live and 5645464 tombstones cells in keyspace.table
去,可能有一个正在扫描的查询的表扫描10
细胞和5645464
墓碑数(带有null
价值),而这样做是我猜测的。需要了解正在执行的查询类型,以便更深入地了解这一点。pn9klfpd2#
对Cassandra来说,所有记录的信息都是不变的。这意味着当您有一个delete操作时(使用delete语句显式地或使用生存时间)[
TTL
]子句),数据库将添加另一个带有名为tombstone的特殊标志的记录。所有这些记录将保留在数据库中,直到gc_grace_seconds
时间已经过去了;默认值为10天。在您的例子中,引擎发现检索到的大多数记录都已被删除,但它们仍在等待gc\u grace\u秒,以便让压缩回收空间。解决这个问题的一个可能办法是减少
gc_grace_seconds
为了那张table。更多信息,请参考这篇文章从最后的泡菜。