一组数据:不同Compaction策略对Cassandra1.1写性能的影响

一直只是看到官方有关LeveledCompactionStrategy优于SizeTieredCompactionStrategy的说法,主要有:

  1. 节省空间,在做Compaction操作过程中,最多需要预留10%的额外空间,而不是SizeTieredCompactionStrategy做major compaction需要的一倍空间,提高了磁盘的利用率。
  2. 读性能的提升。主要是因为level内部数据有序,没有重叠。重复数据只会在不同的level之间出现。据说可以保证90%读,只需要读一个sstable。我想这也要在一定的读写比例之下,才能实现。具体有待测试。

对于写性能,我没看到什么说明,如果有,大家看到可以推荐给我。而我这里实际就写性能进行了测试。空间利用率和读性能后续会有相应数据。 cassandra采用最新稳定版本1.1。默认打开compression设置。LeveledCompactionStrategy设置sstable文件大小为10m。其他均采用默认配置。采用ycsb,对单台服务器,使用100个客户端同时入库。共入数据100000000条,每条大小1k。 当使用SizeTieredCompactionStrategy时,测试数据如下:

  • 概况
RunTime(ms) 7292871
Throughput(ops/sec) 13712.02
Operations 100000000
AverageLatency(us) 7275.795
MinLatency(us) 116
MaxLatency(us) 6754395
95thPercentileLatency(ms) 7
99thPercentileLatency(ms) 34
  • OPS情况

  • AverageLatency情况

当使用LeveledCompactionStrategy时,测试数据如下:

  • 概况
RunTime(ms) 6305630
Throughput(ops/sec) 15858.84
Operations 100000000
AverageLatency(us) 6279.091
MinLatency(us) 113
MaxLatency(us) 4792173
95thPercentileLatency(ms) 6
99thPercentileLatency(ms) 29
  • OPS情况

  • AverageLatency情况

从上面的图中,我们可以看出,LeveledCompactionStrategy情况下的写性能要优于SizeTieredCompactionStrategy。平均的吞吐量高出2000多,平均延迟低1ms。  

posted on 2012-05-08 09:50  sing1ee  阅读(369)  评论(1编辑  收藏  举报