我在使用 Cassandra 2.1.17 时遇到问题。我有一张表,其中有大约 40k“行”。我遇到问题的一个分区中可能有大约 5k 个条目。
表是:
create table billing (
accountid uuid,
date timeuuid,
credit double,
debit double,
type text,
primary key (accountid,date)
) with clustering order by (date desc)
所以这个表中有很多插入和删除操作。
我的问题是,不知何故它似乎被损坏了,我认为是因为我无法再从分区中选择超过某个点的数据。
从 cqlsh 我可以运行这样的东西。
从账单中选择账户 ID、日期、贷方、借方、类型,其中 accountid=XXXXX-xxxx-xxxx-xxxxx... AND 日期 < 3d466d80-189c-11e7-8a57-f33cbced2fc5 limit 2;
首先,我将选择限制设置为 10000,它最多可对它们进行分页,最多可处理 5000 行,最后会出现超时错误。
然后我使用上次的第二个 timeuuid 并选择限制 2,它将失败,限制 1 将起作用。
如果我使用最后一个 timeuuid 作为 < 并限制为 1,它也会失败。
因此,只是寻找我可以在这里做什么,我不确定出了什么问题,也不知道如何修复/诊断发生的事情。
我已经厌倦了修复并强制压实。但似乎仍然存在问题。
感谢您的帮助。
最佳答案
- 尝试从在表上运行手动压缩开始。
- 您可以增加 cassandra 配置中的 read_request_timeout_in_ms 参数。
- 如果您有大量删除和更新,请考虑采用分级压缩策略。
关于小数据集的 Cassandra 查询超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43201256/