小数据集的Cassandra查询超时
我对卡桑德拉2.1.17有问题。我有一张大约有4万行的桌子。我遇到问题的一个分区中可能有5k个条目 表为:小数据集的Cassandra查询超时,cassandra,Cassandra,我对卡桑德拉2.1.17有问题。我有一张大约有4万行的桌子。我遇到问题的一个分区中可能有5k个条目 表为: create table billing ( accountid uuid, date timeuuid, credit double, debit double, type text, primary key (accountid,date) ) with clustering order by (date desc) 因此,在这个表中有
create table billing (
accountid uuid,
date timeuuid,
credit double,
debit double,
type text,
primary key (accountid,date)
) with clustering order by (date desc)
因此,在这个表中有很多插入和删除操作
我的问题是,不知何故它似乎变得损坏了,我想这是因为我不再能够从分区中选择超过某个点的数据
从cqlsh我可以像这样运行soemthing
从账单中选择accountid=XXXXX-xxxx-xxxx-XXXXX的账户、日期、贷方、借方、类型。。。日期<3d466d80-189c-11e7-8a57-f33cbced2fc5限值2
首先,我做了一个10000行的选择限制,它最多可以处理5000行,然后在接近结束时,它会给出一个超时错误
然后我使用上一次UUID中的第二个,并选择限制2,它将失败限制1将工作
如果我将最后一个timeuuid用作<,并限制为1,它也将失败
因此,我只是想看看我能做些什么,我不确定哪里出了问题,也不确定如何修复/诊断发生了什么
我已厌倦了修理,并强行压实。但它似乎仍然存在问题
谢谢你的帮助。在我看来,当你这么做的时候,你好像碰到了很多墓碑。问题是,当他们在那里的时候,卡桑德拉仍然需要检查他们。可能有多种因素,如带有insert语句的ttl、大量删除、插入空值等 我敢打赌,你们需要调整桌面上的gc_grace_秒数,并更频繁地进行维修。但要小心,不要将其设置为低(在此之前必须完成一轮修复) 这里有很好的解释:
我想这个分区中的墓碑太多了 什么是墓碑? 为了记住记录已被删除,Cassandra创建了一个称为“墓碑”的特殊值。墓碑和任何其他值一样具有TTL,但它不像任何其他值那样容易压缩。Cassandra将其保留更长的时间,以避免数据重现等不一致性 如何观看墓碑? nodetoolcfstats让您了解每个切片平均有多少个墓碑 如何解决此问题? 墓碑的保存时间为gc_grace_秒。你必须减少它,然后运行一个主要的压缩来解决这个问题
谢谢你的建议,我会试试看这是否有用。是的,表上会有很多删除。我想知道是否有一种方法可以设置此表,使其具有不同的压实计划或其他类似于此表的内容。目前,该表被用作队列。您可以使用STC和LCS的参数。从降低STC中压缩触发器的阈值或LCS中的小表大小开始。LeveldCompactionStrategy更适合此用例,但如果您有太多的墓碑(超过100000个),则它不会有帮助,而且在增加读取请求超时时间(以毫秒计)时必须小心,您有达到集群饱和点的风险。@DineMartine“如果您有太多墓碑(超过100000)”-为什么,如果他将其调整为小表大小和较低的gc_grace?感谢您的所有回复。我发现了这个链接,我们更详细地介绍了我是如何在cassandra和一些选项中使用这个表的。总的来说,我认为你们所有人都正确地认为墓碑是问题所在。如果不是这样的话,我将尝试回击。这是我找到的链接。是的,谢谢所有回复过多墓碑的人。