【发布时间】:2012-04-02 05:56:10
【问题描述】:
我正在考虑在 Cassandra 中实现一个具有很长行(每行数十万到数百万列)的 CF。
使用完全虚拟的数据,我在一行中插入了 200 万列(均匀分布)。如果我执行切片操作以获得 20 列,那么当您在行的下方执行切片操作时,我会注意到性能大幅下降。
对于大多数列,我似乎能够在 10-40 毫秒内提供切片结果,但是当您接近行尾时,性能会受到影响,响应时间从 1,800,000 的 43 毫秒逐渐增加在 1,900,000 处标记为 214 毫秒,在 1,999,900 处标记为 435 毫秒! (所有切片的宽度相等)。
我无法解释为什么当您到达行尾时性能会出现如此大幅度的下降。有人可以就 Cassandra 在内部做了什么来造成这样的延迟提供一些指导吗?行缓存已关闭,几乎所有内容都是默认的 Cassandra 1.0 安装。
它应该能够支持每行多达 20 亿列,但以这种速度提高的性能将意味着它在实际情况下不能用于非常长的行。
非常感谢。
警告,我一次并行处理 10 个请求,这就是为什么它们比我预期的要慢一些,但这是对所有请求的公平测试,甚至只是在那里串行执行它们这是第 1,800,000 和第 1,900,000 记录之间的奇怪降级吗?
我还注意到,当每行只有 200,000 列时,仅对单个项目进行反向切片时性能极差: query.setRange(end, start, false, 1);
【问题讨论】:
标签: cassandra