如何控制Cassandra的高读延迟



我已经设置了一个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查询,您可以使用以下解决方案之一:

  1. 更改分区键以拥有多个列。这将使你的行更细。

    确保将查询中始终使用的列添加到复合主键。并且仔细选择主键列,因为分区键只支持equals和in条件。

  2. 创建另一个表,其中包含您查询的列的子集。这将减少每个Cassandra行的大小,从而改善您的延迟。

我建议你阅读这篇博文来更好地理解Cassandra中的宽行,并阅读这篇博文来理解Where子句

的限制

最新更新