我试图了解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';
我只是想尝试执行此查询,在执行此查询时将使用并发读取是什么?
谢谢,
哈利
答案 0 :(得分:5)
每个主机一次可以运行多少个活动读取。如果您在阅读阶段下键入nodetool tpstats
,则可以查看此内容。如果活动状态与并发读取器的数量挂钩并且您有一个待处理队列,则可能值得尝试增加此值。当使用体面的堆和SSD时,人们在~128时使用它是非常正常的。这是非常硬件依赖,因此默认值是保守的。
请记住,此线程上的活动速度非常快,通常以子ms为单位进行测量,但假设它们只需要1毫秒即可,只需4分钟,根据小法则,每秒最多可读取4000(本地)读取每个节点最大值(1000/1 * 4),RF = 3和仲裁一致性意味着每个请求至少执行2次读取,因此可以将2分为理论(实际生命更ickier)最大吞吐量。
聚合函数(即max
)在获取副本数据(每个执行本地读取和发送响应)之后在协调器上处理,并且不受直接影响自从在本地传输和请求响应阶段处理以来的并发读取。
答案 1 :(得分:1)
从cassandra 2.2开始,标准聚合函数min, max, avg, sum, count
是内置的。因此,我认为concurrent_reads
不会对您的查询产生任何影响。