前段时间做拦截件监控的时候把拦截件生命期存入mongodb,因生命期有各种变化,因此对此表的更新写操作非常多,老大给我看了一篇文章,才知道mongodb已经支持lsm存储方式了。
原文如连接:
文中对比了LSM和B-Tree的读写吞吐量,在单线程写操作下和多线程读操作下的差异。英文差的小伙伴别指望我这个半吊子来翻译了。
总结一点就是:在写操作上,LSM的吞吐量会是B-Tree的1.5~2倍 而在读操作上,随着读线程的增加,LSM性能下降很明显,B-Tree在读的性能上吞吐量是LSM的1.5~2倍。
因此在一个表需要频繁的进行写操作时,换成LSM的存储方式,将会是一个不错的选择。
目前正准备从B-Tree转向LSM,需要一段时间验证其效果。
另,目前只知道在创建collection的时候可以修改存储方式,脚本如下:
db.createCollection("TestTable",{storageEngine: { wiredTiger: {configString: "type=lsm"}}})