B+ 樹(shù)是對(duì) B 樹(shù)的一個(gè)小升級(jí)。大部分?jǐn)?shù)據(jù)庫(kù)的索引都是基于 B+ 樹(shù)存儲(chǔ)的。MySQL 的 MyISAM 和 InnoDB 引擎的索引都是基于 B+ 樹(shù)存儲(chǔ)。
創(chuàng)新互聯(lián)是一家專業(yè)提供土默特右旗企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為土默特右旗眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
B+ 樹(shù)最大的幾個(gè)特點(diǎn):
1. 非葉子節(jié)點(diǎn)只保留 KEY,放棄 DATA;
2. KEY 和 DATA一起,在葉子節(jié)點(diǎn),并且保存為一個(gè)有序鏈表(正序,反序,或者雙向);
3. B+ 樹(shù)的查找與 B 樹(shù)不同,當(dāng)某個(gè)結(jié)點(diǎn)的 KEY 與所查的 KEY 相等時(shí),并不停止查找,而是沿著這個(gè) KEY 左邊的指針向下,一直查到該關(guān)鍵字所在的葉子結(jié)點(diǎn)為止。
兩者的算法思路其實(shí)很像:比中間的小就在剩下的左邊,大就在剩下的右邊找 但是: 二叉樹(shù)查找一般習(xí)慣是在鏈?zhǔn)酱鎯?chǔ)上進(jìn)行,為一個(gè)樹(shù)形結(jié)構(gòu) 二分查找一定在順序存儲(chǔ)上進(jìn)行
在二叉樹(shù)中有一種平衡二叉樹(shù),通過(guò)平衡算法可以讓二叉樹(shù)兩邊的節(jié)點(diǎn)平均分布,這樣就能讓所有的索引查找都在一個(gè)近似的時(shí)間內(nèi)完成。而MySQL這類數(shù)據(jù)庫(kù)采用了二叉樹(shù)的升級(jí)版B+Tree的形式,每個(gè)節(jié)點(diǎn)有三個(gè)支葉,不過(guò)其算法原理仍然是平衡樹(shù)的原理。