Cassandra 具有长 IN 运算符的慢速(rpc 超时)读取请求

Posted

技术标签:

【中文标题】Cassandra 具有长 IN 运算符的慢速(rpc 超时)读取请求【英文标题】:Cassandra have slow(rpc timeout) read request with long IN operator 【发布时间】:2013-08-12 12:47:31 【问题描述】:

我有下一个表结构:

SELECT * FROM v WHERE uid = 0x5103be34e695ba3c31000000;

 uid                        | cid       | v
----------------------------+-----------+-------
 0x5103be34e695ba3c31000000 | 02j1Dy9G1 |  True
 0x5103be34e695ba3c31000000 | 03szNx7G1 | False
 0x5103be34e695ba3c31000000 | 0SREjO9G1 |  True
 0x5103be34e695ba3c31000000 | 0bQ4Qn9G1 |  True
 0x5103be34e695ba3c31000000 | 0ojEVLWF1 |  True
 0x5103be34e695ba3c31000000 | 1NiWfO9G1 |  True
 0x5103be34e695ba3c31000000 | 1fSmhWGF1 |  True
 0x5103be34e695ba3c31000000 | 1o0Ri3TF1 |  True

用户 (uid) 喜欢 (True) 或不喜欢 (False) 内容 (cid)

“用户喜欢内容吗?”

SELECT * FROM v WHERE uid = 0x5103be34e695ba3c31000000 AND cid IN ('Rqy9V79J',....more than 2000 cids...);

rpc timeout

Normal SELECT * FROM v WHERE uid = 0x5103be34e695ba3c31000000 works very fast.

如何使用 IN 加快读取请求?其他数据结构? 有任何想法吗?

【问题讨论】:

你能发布你的完整架构(创建表语句),包括任何索引吗? 您的集群中有多少个实例?如果您有多个,请将一致性设置为 local_quorum 并查看是否有相同的问题。 【参考方案1】:

带有很多参数的IN-operator需要更多的内存给每个线程。

要修复它,请尝试设置 JVM_OPTS="$JVM_OPTS -Xss512k"

【讨论】:

以上是关于Cassandra 具有长 IN 运算符的慢速(rpc 超时)读取请求的主要内容,如果未能解决你的问题,请参考以下文章

transition-

Spark Cassandra 连接器 - 分区键上的范围查询

VOA慢速听力Blockchain to Fight Corruption in Southeast

R 中 %in% 运算符的 C++ 版本

环与理想

r %in% 运算符 |控制大小写敏感性[重复]