是否可以告诉cassandra仅在本地节点上运行查询

时间:2014-11-18 07:39:24

标签: cassandra cql cql3 cqlsh

我有两个完全复制的节点。当我对包含30行的表运行查询时,cqlsh trace似乎表明它从一个服务器获取一些行,而从另一个服务器获取一些行。

因此,即使两个节点上的所有行都可用,查询也需要250ms +而不是1ms用于其他查询。

我已经在协议级别将一致性级别设置为“1”,您还需要做些什么才能使它只使用一个节点进行查询?

select * from organisation:

 activity                                                                                        | timestamp    | source       | source_elapsed
-------------------------------------------------------------------------------------------------+--------------+--------------+----------------
                                                                              execute_cql3_query | 04:21:03,641 | 10.1.0.84 |              0
                                                 Parsing select * from organisation LIMIT 10000; | 04:21:03,641 | 10.1.0.84 |             68
                                                                             Preparing statement | 04:21:03,641 | 10.1.0.84 |            174
                                                                   Determining replicas to query | 04:21:03,642 | 10.1.0.84 |            307
                                                                 Enqueuing request to /10.1.0.85 | 04:21:03,642 | 10.1.0.84 |           1034
                                                                   Sending message to /10.1.0.85 | 04:21:03,643 | 10.1.0.84 |           1402
                                                                Message received from /10.1.0.84 | 04:21:03,644 | 10.1.0.85 |             47
 Executing seq scan across 0 sstables for [min(-9223372036854775808), min(-9223372036854775808)] | 04:21:03,644 | 10.1.0.85 |            461
                                                              Read 1 live and 0 tombstoned cells | 04:21:03,644 | 10.1.0.85 |            560
                                                              Read 1 live and 0 tombstoned cells | 04:21:03,644 | 10.1.0.85 |            611

………..etc….....

1 个答案:

答案 0 :(得分:1)

事实证明,Cassandra版本2.0.5-2.0.9中存在一个错误,当只需要与一个节点通信时,Cassandra就更有可能在两个节点上请求数据。

升级到2.0.10或更高版本可以解决此问题。

参考:CASSANDRA-7535