我已经设置了一个带有 3 个节点的 Cassandra。在客户端我使用 Datasatx java 驱动程序,我的查询就像
Select Abc from Cassandra where key =a and cluster_column<=10 limit 1;
正如我们在上面的查询中看到的,我希望拥有小于 10 的最大“cluster_column”。 我有宽行。因此,当数据跨行增长时,读取延迟就会增加。
我仅使用键缓存和级别压缩策略。 MemTable 大小保持为 2048 MB。
我可以调整哪些参数来降低服务器级别的读取延迟。
请回复
提前致谢
最佳答案
在 Cassandra 中,匹配分区键时,将获取整行,然后应用后续过滤器。 Cassandra 中的一行可以是您在 CQL 表中看到的多行,具体取决于您的(复合)主键。
就您的情况而言,如果您经常对一小部分列执行选择查询,则可以使用以下解决方案之一:
更改分区键以拥有多个列。这将使你的行变瘦。
确保将查询中始终使用的列添加到复合主键中。并仔细选择主键列,因为分区键仅支持 equals 和 in 条件。
使用您经常查询的列子集创建另一个表。这将减少每个 Cassandra 行的大小,从而改善延迟。
我建议您阅读this blog post要更好地了解 Cassandra 中的宽行,请阅读 this post了解Where子句的限制
关于cassandra - 如何控制 Cassandra 中的高读取延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25307721/