cassandra - 如何控制 Cassandra 中的高读取延迟?

标签 cassandra

我已经设置了一个带有 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 表中看到的多行,具体取决于您的(复合)主键。

就您的情况而言,如果您经常对一小部分列执行选择查询,则可以使用以下解决方案之一:

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

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

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

我建议您阅读this blog post要更好地了解 Cassandra 中的宽行,请阅读 this post了解Where子句的限制

关于cassandra - 如何控制 Cassandra 中的高读取延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25307721/

相关文章:

hadoop - Cassandra 和 MapReduce - 最低设置要求

windows - Cassandra - "The system cannot find the file specified"

node.js - 可读流和回调函数

cassandra - 从没有墓碑和 ttl 的 Cassandra 中删除整个分区?

java - 通过 Eclipse 连接到远程 Cassandra 数据库

node.js - 从 Node.js 远程写入 Cassandra 服务器时遇到问题

cassandra - 使用 IN 运算符在 cassandra cql 表中删除

Cassandra 0.8 = 提供了什么样的 "Row Count"功能?

Cassandra where 子句中未定义名称

高 IOPS 运行 5 分钟后,Cassandra 抛出 NoHostAvailableException