Cassandra并发读写

Cassandra concurrent read and write

我正在尝试了解 Cassandra 并发读写。我遇到了名为

的 属性
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'; 

我只是想执行这个查询,并发读取在执行这个查询时有什么用?

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

这就是每个主机一次 运行 可以进行多少活动读取。如果您在阅读阶段键入 nodetool tpstats,这是可见的。如果活动与并发读者的数量挂钩并且您有一个挂起的队列,则可能值得尝试增加它。当使用适当大小的堆和 SSD 时,人们将其设置为 ~128 是很正常的。这 非常 依赖于硬件,因此默认值是保守的。

请记住,此线程上的 activity 非常快,通常以亚毫秒为单位测量,但假设即使只有 4 毫秒,它们也需要 1 毫秒,根据利特尔定律,您最多可以读取 4000 次(本地)每个节点每秒最大 (1000/1 * 4),RF = 3 和仲裁一致性意味着您每个请求至少执行 2 次读取,因此可以分成 2 来考虑理论上的(现实生活更糟糕)最大吞吐量。

聚合函数(即max)在协调器上处理,在获取副本的数据(每个副本都进行本地读取和发送响应)之后,而不是直接 受到并发读取的影响,因为在本机传输和请求响应阶段进行了处理。