【问题标题】:ttl in cassandra creating tombstones卡桑德拉中的 ttl 创建墓碑
【发布时间】:2018-04-15 15:50:40
【问题描述】:

我只对 cassandra 进行插入。在插入时,不插入空值只是为了避免墓碑。但是很少有记录是用 TTL 插入的。但是然后从表中执行 select count(*) 会出现以下错误 -

为查询 SELECT * FROM 读取 76 个活动行和 1324 个墓碑单元 xx.yy WHERE 令牌(y) >= 令牌(fc872571-1253-45a1-ada3-d6f5a96668e8)限制 100(见 tombstone_warn_threshold)

TTL 插入会导致 cassandra 3.7 中的墓碑吗?如何减轻警告?

只有插入没有更新,有些记录没有 TTL,有些记录有 TTL

【问题讨论】:

  • 不是说 TTL 最终会变成墓碑吗?
  • 能看到表结构和插入代码吗?

标签: cassandra cassandra-3.0


【解决方案1】:

来自 datastax 文档:https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_expire_c.html

在列创建后的秒数超过 TTL 值后,TTL 数据被视为过期并包含在结果中。在读取路径上的下一次读取之后,过期的数据会被标记为墓碑,但它最多会保留 gc_grace_seconds。在这段时间之后,墓碑数据会在正常的压缩和修复过程中自动删除。

在压缩或修复之前,这些条目将被视为墓碑。

【讨论】:

    【解决方案2】:

    为 TTL 和压缩再增加一个点。即使在gc_grace_seconds 之后,压缩的默认设置仅根据tombstone_compaction_intervaltombstone_threshold 启动

    以前,由于记录数多的表的墓碑数量多,我们遇到了读取超时问题。最终,我们需要减少 tombstone_threshold 并启用 unchecked_tombstone_compaction 以使压缩过程更频繁地触发。

    您可以参考以下文档了解更多详情

    http://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlCreateTable.html?hl=unchecked_tombstone_compaction#tabProp__cqlTableGc_grace_seconds

    【讨论】:

      猜你喜欢
      • 2018-09-06
      • 2019-06-24
      • 2019-06-18
      • 2013-01-14
      • 2021-10-27
      • 2019-07-10
      • 1970-01-01
      • 2017-04-09
      • 1970-01-01
      相关资源
      最近更新 更多