我已经设置了一个Cassandra With 3节点。在客户端,我使用Datasatx java驱动程序,我的查询是像
Select Abc from Cassandra where key =a and cluster_column<=10 limit 1;
正如我们在上面的查询中看到的,我想要最大的"cluster_column"小于10。我的头发很宽。因此,当数据跨行增长时,读延迟会增加。
我只使用键缓存和级别压缩策略。MemTable的大小保持为2048mb。
我可以调整什么参数来降低服务器级的读取延迟。
请回复
Thanks in advance
在Cassandra中,在匹配分区键时获取整行,然后应用后续过滤器。Cassandra中的单行可以多于CQL表中的一行,这取决于您的(复合)主键。
在您的情况下,如果您经常对一小部分列执行select查询,您可以使用以下解决方案之一:
-
更改分区键以拥有多个列。这将使你的行更细。
确保将查询中始终使用的列添加到复合主键。并且仔细选择主键列,因为分区键只支持equals和in条件。
-
创建另一个表,其中包含您查询的列的子集。这将减少每个Cassandra行的大小,从而改善您的延迟。
我建议你阅读这篇博文来更好地理解Cassandra中的宽行,并阅读这篇博文来理解Where子句