Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra select查询给出Gocql驱动程序超时错误_Cassandra_Cassandra 3.0 - Fatal编程技术网

Cassandra select查询给出Gocql驱动程序超时错误

Cassandra select查询给出Gocql驱动程序超时错误,cassandra,cassandra-3.0,Cassandra,Cassandra 3.0,我在同时执行2000多个SELECT查询时遇到超时错误。我正在为Cassandra 3.7(JAVA版本8)使用gocql客户端 “错误”:“gocql:超时期间未收到卡桑德拉的响应” 我将下表作为模式 下面是我的查询,它在同时执行2000多个查询时给出超时错误 "SELECT * FROM my_db.my_message WHERE id=? AND status = ?" “id”是where子句中的主键,“status”是次索引。 “message_id”也是主键,但不在此选择查询中使

我在同时执行2000多个SELECT查询时遇到超时错误。我正在为Cassandra 3.7(JAVA版本8)使用gocql客户端

“错误”:“gocql:超时期间未收到卡桑德拉的响应”

我将下表作为模式

下面是我的查询,它在同时执行2000多个查询时给出超时错误

"SELECT * FROM my_db.my_message WHERE id=? AND status = ?"
“id”是where子句中的主键,“status”是次索引。 “message_id”也是主键,但不在此选择查询中使用


任何帮助都将不胜感激。提前感谢。

不要对频繁更新或删除的列使用索引

记住什么时候不使用索引

  • 查询大量记录以获得少量结果的高基数列
  • 在使用计数器列的表中
  • 在经常更新或删除的列上
  • 在大分区中查找行,除非是狭义查询
我认为您的专栏
status
的基数较低,并且经常更新。由于您通过提供分区键
id
来缩小搜索范围,所以低基数对您来说不是问题主要问题是您经常更新索引列状态。每次更新cassandra时,存储一个墓碑

Cassandra在索引中存储墓碑,直到墓碑限制达到100K个单元格。超过逻辑删除限制后,使用索引值的查询将失败

因此,您应该在应用程序层中按状态列值筛选数据。

"SELECT * FROM my_db.my_message WHERE id=? AND status = ?"