1. LSM樹優化了順序寫,因此寫性能很好,但在查詢上:?需要從Level 0到Level n一直順序查下去。極端情況是LSM樹中不存在該數據,則需要遍歷L0->Ln,最后返回空集。
解決方法是用布隆過濾器優化查詢。
2. B+樹范圍查詢性能很好,缺點包括:
- ?隨機寫的性能差?:B+樹每次插入或更新操作可能需要訪問不同的葉子節點,導致每次寫操作都需要隨機讀寫。
- ?更新操作的代價高?:每次更新操作都需要修改索引樹,可能會觸發寫鎖,阻塞數據查詢操作,尤其是在并發寫的情況下,性能會更差?。
- ?占用空間大?:B+樹索引結構會占用較多的存儲空間,尤其是在數據庫增大時,這種占用會更加顯著?
? ? ?以下幾種情況可能表現不佳:
- 高并發下的分裂合并? 2.更新? 3.樹比較深的時候 4.?數據分布不均勻:可能會導致某些分支的節點過于密集,而其他分支則比較稀疏。
總結:B+樹讀快寫慢, LSM樹寫快讀慢(所以HBase用布隆過濾器彌補讀問題),兩者適用場景互補。
參考:?https://zhuanlan.zhihu.com/p/415799237