【问题标题】:Cassandra - deleted data still thereCassandra - 删除的数据仍然存在
【发布时间】:2014-11-20 07:58:35
【问题描述】:

Cassandra 版本:1.2.6。单节点。

我已经从表中删除了数据

DELETE FROM mytable WHERE symbol = 'symbol1' AND field = 'field1';

并且以下查询不会返回它:

SELECT symbol, ts, value FROM mytable WHERE symbol IN ('symbol1');

但是,一些不同的、限制性更强的查询仍​​会返回旧的(已删除的)数据:

SELECT symbol, ts, value FROM mytable WHERE symbol IN ('symbol1') AND field='field1' AND ts >= '2013-09-04 00:00:00+0000' AND ts <= '2014-09-25 00:00:00+0000';

数据并没有立即重新出现,而是在大约 5 到 10 分钟之后,在该符号/字段的表中添加了几行额外的行之后。

我已经跑了:nodetool repair mykeyspace

但这没有帮助。任何想法如何解决它?

我的表的架构:

CREATE TABLE mytable (
  symbol text,
  field text,
  ts timestamp,
  value double,
  PRIMARY KEY (symbol, field, ts)
) WITH
  bloom_filter_fp_chance=0.010000 AND
  caching='KEYS_ONLY' AND
  comment='' AND
  dclocal_read_repair_chance=0.000000 AND
  gc_grace_seconds=864000 AND
  read_repair_chance=0.100000 AND
  replicate_on_write='true' AND
  populate_io_cache_on_flush='false' AND
  compaction={'class': 'SizeTieredCompactionStrategy'} AND
  compression={'sstable_compression': 'SnappyCompressor'};

【问题讨论】:

  • 看来运行一个主要的压缩确实有帮助。 nodetool compact mykeyspace 我应该不时手动运行主要压缩吗?
  • 你使用二级索引吗?
  • @Mikhail Stepura,没有二级索引。这是整个表定义。

标签: cassandra


【解决方案1】:

在 Cassandra 中删除与 RDBMS 完全不同。我强烈推荐阅读Datastax Documentation : About Deletes

【讨论】:

  • 感谢 Chiron,我已阅读此文档。然而我仍然不明白为什么数据会再次出现,最重要的是如何阻止它再次发生。
  • 死链接,仅链接答案。
【解决方案2】:

这个问题在 1.2.19 中与其他几个墓碑问题一起修复,听起来像您遇到的问题:https://issues.apache.org/jira/browse/CASSANDRA-7810

如果您愿意尝试,您会考虑升级吗? Cassandra 1.2.x 有很多与已删除数据相关的更改/修复:https://github.com/apache/cassandra/blob/cassandra-1.2/CHANGES.txt

【讨论】:

  • 非常感谢@catpows。我今天学到了很多关于 Cassandra 的知识!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
  • 2015-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
相关资源
最近更新 更多