cassandra - 从没有墓碑和 ttl 的 Cassandra 中删除整个分区?

标签 cassandra datastax cassandra-3.0 datastax-startup

是否可以从 Cassandra 表中删除整个分区,而无需写入墓碑并等待 gc_grace_period 并运行压缩?

最佳答案

从来没有在 gc_grace_period 之前。但你能控制它是一件好事。如果你知道墓碑的目的,那么你就可以理解在分布式删除中,如果一个节点死了一段时间,你可能会得到删除的数据或者会产生一些一致性问题。对于单节点,可以将gc_grace_period设置为0。但是对于多节点,这个值应该大于0。对于一些表中频繁删除,如果你担心很多tombstones生成,你可以为那些表设置小的gc_grace,但是考虑节点故障场景并根据需要进行处理。

部分链接:

Deletes Without Tombstones or TTLs
About deletes in Cassandra

编辑的答案

Range Tombstones are an efficient way of deletion based on the partition key. This creates a single tombstone for an entire row, decreasing the number of tombstones read by range reads and the number of tombstones that need to be merged or cleaned up by compaction.



来自@mando222 & 我分享的链接。请阅读给定的链接。你会得到你的答案。

有不同类型的删除。整个分区删除(或单行删除)、单列删除、范围删除。如果删除单个行或分区而不提及列,则该行或整个分区将只创建一个墓碑。它们没有针对每个单元格的单独墓碑,而是具有单个范围墓碑。

如果您执行范围删除,则驻留在范围内的某些行还会为该范围创建单个墓碑。

Fewer tombstones yield faster reads and quicker, less expensive compactions.

关于cassandra - 从没有墓碑和 ttl 的 Cassandra 中删除整个分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50209161/

相关文章:

java - 写C*超时以不可预测的方式出现

java - Cassandra 写入后读取与 LOCAL_QUORUM 不一致

java - 几秒钟后 cassandra.service 退出,nodetool 给出 'Connection refused' 错误

c++ - 如何在一个节点的 Cassandra "cluster"中一次加载大量数据?

cassandra - 我可以在 Cassandra 中拥有一个名称以数字开头的键空间吗?

cassandra - 如何获取Cassandra表中的行数

java - Cassandra datastax 给出错误 "All host(s) tried for query failed"

java - Cassandra 触发器

mysql - 使用 Sqoop 将自由格式查询从 MySQL 导入到 Cassandra

cassandra - 如何检查cassandra中列的大小