3

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

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

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

4

2 回答 2

6

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

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

看:

于 2011-04-21T21:38:23.017 回答
2

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

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

于 2011-04-21T21:53:57.360 回答