【发布时间】: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