2017-12-18 308 views
0

我想了解卡桑德拉并发读写。我遇到属性叫卡桑德拉并发读写

concurrent_reads (Defaults are 8) 

A good rule of thumb is 4 concurrent_reads per processor core. May increase the value for systems with fast I/O storage 

所以根据定义,纠正我如果错了,4个线程可以同时访问数据库。所以我们可以说我试图运行下面的查询,

SELECT max(column1) from 'testtable' WHERE duration = 'month'; 

我只是想执行这个查询,会是在执行这个查询使用并行读的?

感谢,
哈利

回答

4

即每台主机在一次运行多少个活动读取。如果您在阅读阶段输入nodetool tpstats,则可以看到该字段。如果活动人员与并发读取器的数量挂钩,并且您有待处理队列,则可能值得尝试增加此值。当人们使用体面大小的堆和固态硬盘时,这个数字在128左右是很正常的。这是非常依赖硬件,所以默认值是保守的。

请记住,该线程上的活动非常快,通常以小于ms为单位进行度量,但假设即使只有4个小时也只需要1ms,但根据小法则,每个节点最多可以有每秒40​​00个(本地)读取(1000/1 * 4),其中RF = 3和法定一致性意味着您每次请求至少执行2次读取,因此可以将2除以认为理论(实际生活更狡猾)最大吞吐量。

聚集函数(即max)是在所述协调处理时,获取所述副本的数据(各做一个本地读取和发送响应)之后,并且不直接由并发影响读取因为在天然处理运输和请求响应阶段。

1

从卡桑德拉2.2开始,标准的聚合函数min, max, avg, sum, count是内置。所以,我不认为concurrent_reads会对您的查询产生任何影响。