【问题标题】:Cassandra concurrent read and writeCassandra 并发读写
【发布时间】:2019-07-18 14:46:41
【问题描述】:

我正在尝试了解 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 cassandra-3.0


    【解决方案1】:

    这就是每台主机一次可以运行多少活动读取。如果您在阅读阶段键入nodetool tpstats,则可以查看此信息。如果活动与并发读者的数量挂钩,并且您有一个待处理的队列,则可能值得尝试增加它。当使用大小合适的堆和 SSD 时,人们在 128 左右拥有这个是很正常的。这非常依赖于硬件,所以默认是保守的。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-21
        • 1970-01-01
        • 2020-10-06
        • 2017-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多