首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cassandra :删除整个分区会创建tombstone吗?

Cassandra :删除整个分区会创建tombstone吗?
EN

Stack Overflow用户
提问于 2021-01-18 15:04:37
回答 3查看 152关注 0票数 2

我是新来卡桑德拉的。我遇到了按分区执行删除的情况。删除整个分区是否会创建tombstones?现在删除后空间不会被释放。

EN

回答 3

Stack Overflow用户

发布于 2021-01-18 16:01:42

是的,删除整个分区会创建一种特殊类型的墓碑,它会“隐藏”分区中的所有数据。但像其他墓碑一样,它是为gc_grace_seconds保留的,只有在那之后才会收集。

在the Last Pickle中有一个great blog post,它详细地解释了墓碑

票数 3
EN

Stack Overflow用户

发布于 2021-01-21 14:52:03

如前所述,您可以将gc_grace_seconds更新为0,但我不建议这样做,除非您的集群中只有一个节点或您的RF=1,您可以尝试将GC宽限期减少到您可以接受的时间。我想把我认为Cassandra节点可以停用的最大时间。

立即释放空间的另一个选择是将您的数据模型更改为使用truncate/drop。例如,如果您只需要24小时的数据,那么您可以每天创建一个表,然后在某个时候删除不需要的表。

票数 1
EN

Stack Overflow用户

发布于 2021-04-01 22:08:53

我测试了用相同的分区键删除后插入新数据。

代码语言:javascript
复制
create table message_routes (
  user_id bigint,
  route_id bigint,
  primary key ((user_id), service_id)
)

  1. insert into message_routes (user_id, route_id) values (1, 2)

  1. delete from message_routes where user_id = 1

  1. insert info message_routes (user_Id, route_id) values (1, 3)

在执行每个阶段之后,nodetool flush & nodetool compact,但是来自阶段2的tombstone没有被逐出,如sstablemetadata所示。在执行delete之后,new insert。我希望Cassandra有针对这种情况的优化。

有趣的是,如果频繁删除,这个墓碑会如何影响分区键的select查询?

代码语言:javascript
复制
select * from message_routes where user_id = 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65770101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档