Cassandra "truncate"不清空表

标签 cassandra truncate

我最近也遇到了这个问题。当我将表(称为事件和索引)填充到超过 100 万个,并尝试截断它们以进行新测试时,截断后表不为空。 CQL 显示类似

cqlsh> select count(*) from event limit 100000000;

 count
---------
 2033492


cqlsh> truncate event;
cqlsh> select count(*) from event limit 100000000;

 count
-------
    25

(1 rows)

cqlsh> select count(*) from event limit 100000000;

 count
-------
    27

(1 rows)

cqlsh> select count(*) from event limit 100000000;

 count
-------
    34

(1 rows)

cqlsh> select event_id, dateOf(time_token), unixTimestampOf(time_token), writetime(time_token) from event limit 100000000;

 event_id                             | dateOf(time_token)       | unixTimestampOf(time_token) | writetime(time_token)
--------------------------------------+--------------------------+-----------------------------+-----------------------
 567c4f2b-c86a-4663-a8ec-50f70d183b62 | 2014-07-22 22:29:04-0400 |               1406082544416 |      1406082544416000
 20a2f9e7-cdcb-4c2d-93e7-a646d0910e6b | 2014-07-22 15:12:29-0400 |               1406056349772 |      1406056349774000
 ... ...
 0d983cec-4ba5-4df8-ada8-eb347add57bf | 2014-07-22 22:20:53-0400 |               1406082053926 |      1406082053930000

(34 rows)

cqlsh>

在“truncate”命令之后,“select count(*)”返回的数字快速变化,并稳定在 34。为了确保当时没有其他程序插入记录,我运行了一个显示所有记录的 CQL 语句创建于 7 月 22 日或 23 日,即 4 至 5 天前。

我多次尝试“truncate”命令,结果都是一样的。

这发生在两种环境中。第一个环境是在我的笔记本电脑上,我使用本地主机 IP(127.0.0.2、127.0.0.3 和 127.0.0.4)创建了 3 个 Cassandra 实例集群,而第二个环境是 3 节点 Cassandra 集群,每个节点都位于单独的 Linux CentOS 上6.5机。我使用的是 Cassandra 2.0.6。

有人可以帮我弄清楚发生了什么事吗?提前致谢。

最佳答案

这是 Cassandra 2.0.6 中的一个错误,至少在 2.0.10 中得到修复。

显然,这不是一个众所周知的(广为人知的)错误,因为当我在 2014 年 Cassandra 峰会上向他们重现该错误时,许多 DataStax 专家也不知道它。他们也很困惑,直到 CQL 架构师过来并告诉他们。说他在最近的版本中修复了一个神秘的错误。他让我升级到2.0.10,问题就消失了。 2.0.10 中“截断”后不再有残留记录。

关于Cassandra "truncate"不清空表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25001874/

相关文章:

cassandra - 通过 Astyanax 连接到 Cassandra 时出现 PoolTimeoutException

mysql - TRUNCATE table 仅当它存在时(以避免错误)

truncate - Zebra 编程语言 (ZPL) II 使用 ^FB 或 ^RB 以特定长度截断文本

cassandra - 使用 "with"时间戳通过 Ignite 写入 Cassandra,以消除对 Cassandra 的陈旧写入

cassandra - 如何从不在 Cassandra 集群环中的节点使用 sstableloader

cassandra - 小牛队之后的 CQLSH : now with missing "t"

sql-server-2008 - 截断 View 中的基础表

c++清除特定位置后的文件内容

javascript - 使用 Range API chop 文本

cassandra - 这个主键如何获取组中的所有用户?