【问题标题】:Cassandra multiget performanceCassandra 多获取性能
【发布时间】:2011-08-10 11:20:30
【问题描述】:

我有一个 cassandra 集群,其行数相当少(200 万左右,我希望这对于 cassandra 来说是“小”)。每行都以唯一的 UUID 为键,每行大约有 200 列(给或取几列)。总而言之,这些都是非常小的行,没有二进制数据或大量文本。只是短字符串。

我刚刚完成了从旧数据库到 cassandra 集群的初始导入。我已经在每台机器上调整了 cassandra。有数亿次写入,但没有读取。现在是时候使用这个东西了,我发现读取速度绝对令人沮丧。我正在一次使用 pycassa 在 500 到 10000 行的任何地方进行 multiget。即使在 500 行时,性能也很糟糕,有时需要 30 多秒。

什么会导致这种行为?在像这样的大量进口之后,你会推荐什么样的东西?谢谢。

【问题讨论】:

    标签: cassandra pycassa


    【解决方案1】:

    听起来您遇到了 io 瓶颈。如果您的数据适合 ram,Cassandra 每个内核的读取速度约为 4000 次/秒。否则,您将像其他任何事情一样受到搜索限制。

    我注意到,通常在系统中“调整地狱”是为您开始加载系统后保留的。 :)

    见:

    【讨论】:

      【解决方案2】:

      是否可以将多块分割成更小的块?通过这样做,您可以将 get 分布在多个节点上,并可能通过将负载分布在节点之间并使用更小的数据包进行反序列化来提高性能。

      这让我想到了下一个问题,您的读取一致性设置是什么?除了@jbellis 提到的 IO 瓶颈之外,如果您需要特别高的一致性,您还可能遇到网络流量问题。

      【讨论】:

        猜你喜欢
        • 2023-03-27
        • 2018-03-20
        • 2020-01-26
        • 2016-08-16
        • 2015-05-17
        • 1970-01-01
        • 2015-09-03
        • 2017-08-13
        • 2012-05-31
        相关资源
        最近更新 更多