Cassandra 1.0.12
我们有一个名为transactionRecords的列族,其rowkey为“ApplicationName”。 列族用于记录事务,其中namevalue对如(UUID,transInfo)。
在大约1.5K TPS的重负载下,1小时后,SliceRange查询非常慢。对于sliceRage,我们只设置限制,例如10000.开始和结束为空。我们想使用sliceRange读出事务信息,做一些业务逻辑,然后从Cassandra中删除。
我们使用org.scale7.cassandra.pelops.Mutator API插入到DB中: Mutator.writeColumn(columnFamily,rowkey,Mutator.newColumn(uuid,string));
使用nodetool时,SliceRange读取时的延迟时间超过10秒。
但现在,读取时会出现TimedOutException。
有人有类似的问题吗?如何减少延迟? 我们的数据结构是否符合我们的目的? 有任何帮助或建议吗?
答案 0 :(得分:2)
我认为这是我的编程错误。
当我进行范围扫描时,我总是从头开始(我有5G MEMTable),并且在DB中有越来越多的条目,扫描速度下降,最后它大于30秒,并导致TimedOutException。 / p>
通过更改为从先前停止的位置(在排序的键上)进行扫描,现在对我来说效果很好。