许多的nosql都使用leveldb或者类似leveldb的系统作为存储引擎,例如tair,hbase,canssandra,因此理解并调优存储引擎可以大大的提高系统的性能。
前一篇大致介绍了原理,这一篇接下来讲解调优相关的内容。
10 bits 0.0081
15 bits 0.0007
19 bits 0.0001
假设每次读取需要查找10个文件,那么10bits的hash冲突导致的多余读取为10 * 0.0081 = 0.081大约是8%
我在实际使用tair中,当写入较多时,导致level0的数据可能达到32,这种情况下10bits的多余夺取为35 * 0.0081 = 0.2835大约是28%,此时应当增加bits,例如15bits则额外读为2.45%
这两点是是实际使用中碰到的,可以提升实际的应用性能
前一篇大致介绍了原理,这一篇接下来讲解调优相关的内容。
leveldb中的写放大
leveldb中的读放大
10 bits 0.0081
15 bits 0.0007
19 bits 0.0001
假设每次读取需要查找10个文件,那么10bits的hash冲突导致的多余读取为10 * 0.0081 = 0.081大约是8%
我在实际使用tair中,当写入较多时,导致level0的数据可能达到32,这种情况下10bits的多余夺取为35 * 0.0081 = 0.2835大约是28%,此时应当增加bits,例如15bits则额外读为2.45%
这两点是是实际使用中碰到的,可以提升实际的应用性能