前段時間做攔截件監控的時候把攔截件生命期存入mongodb,因生命期有各種變化,因此對此表的更新寫操作非常多,老大給我看了一篇文章,才知道mongodb已經支持lsm存儲方式了。
原文如連接:https://github.com/wiredtiger/wiredtiger/wiki/Btree-vs-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"}}} )