是時候了解了解算法了:
b-tree、b+-tree:
1.b-tree非葉子節點包含關鍵字信息,b+-tree不包含關鍵字信息,僅保存關鍵字范圍,所以b+-tree的樹高度可能相對更低,能減少磁盤io;
2.b+-tree所有的信息存在葉子節點中
3.m階的b+-tree的孩子個數為ceil(2/m)-1<=n<=m,而b-tree個數上限為m-1,所以每個b+-tree的節點孩子數比b-tree多(待確認);
4.MySQL等存儲系統使用帶順序指針的b+-tree,所以在順序讀取時,能夠方便地讀取到范圍值,這樣讀取更快;
5.b-tree和b+-tree在插入、刪除操作時,會自動分裂或合并,保持結構;
6.innodb二級索引存儲的是鍵值而不是指針;
7.輔助索引使用主鍵作為"指針" 而不是使用地址值作為指針的好處是,減少了當出現行移動或者數據頁分裂時輔助索引的維護工作,使用主鍵值當作指針會讓輔助索引占用更多的空間,換來的好處是InnoDB在移動行時無須更新輔助索引中的這個"指針"
2-3-4樹:
1.2-3-4樹會自頂向下分裂;
參考:
http://blog.csdn.net/v_JULY_v/article/details/6105630
http://www.tuicool.com/articles/ZN7nu2
http://blog.jobbole.com/24006/
http://blog.csdn.net/v_july_v/article/details/6530142#comments
http://www.admin10000.com/document/5372.html
新聞熱點
疑難解答