国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

什么是多路搜索樹(shù)B樹(shù)和B+樹(shù)

發(fā)布時(shí)間:2021-09-14 18:07 來(lái)源:億速云 閱讀:0 作者:柒染 欄目: Mysql 歡迎投稿:712375056

本篇文章給大家分享的是有關(guān)什么是多路搜索樹(shù)B樹(shù)和B+樹(shù),小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習,希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著(zhù)小編一起來(lái)看看吧。

多路搜索樹(shù)

  1. 完全二叉樹(shù)高度:O(log2N),其中2為對數

  2. 完全M路搜索樹(shù)的高度:O(logmN),其中M為對數,樹(shù)每層的節點(diǎn)數

  3. M路搜索樹(shù)主要用于解決數據量大無(wú)法全部加載到內存的數據存儲。通過(guò)增加每層節點(diǎn)的個(gè)數和在每個(gè)節點(diǎn)存放更多的數據來(lái)在一層中存放更多的數據,從而降低樹(shù)的高度,在數據查找時(shí)減少磁盤(pán)訪(fǎng)問(wèn)次數。

  4. 所以每層的節點(diǎn)數和每個(gè)節點(diǎn)包含的關(guān)鍵字越多,則樹(shù)的高度越矮。但是在每個(gè)節點(diǎn)確定數據就越慢,但是B樹(shù)關(guān)注的是磁盤(pán)性能瓶頸,所以在單個(gè)節點(diǎn)搜索數據的開(kāi)銷(xiāo)可以忽略。

 B樹(shù)

B樹(shù)是一種M路搜索樹(shù),B樹(shù)主要用于解決M路搜索樹(shù)的不平衡導致樹(shù)的高度變高,跟二叉樹(shù)退化為鏈表導致性能問(wèn)題一樣。B樹(shù)通過(guò)對每層的節點(diǎn)進(jìn)行控制、調整,如節點(diǎn)分離,節點(diǎn)合并,一層滿(mǎn)時(shí)向上分裂父節點(diǎn)來(lái)增加新的層等操作來(lái)來(lái)保證該M路搜索樹(shù)的平衡。具體規則如下:

  1. 根節點(diǎn)的兒子樹(shù)個(gè)數在2到M之間,其他非葉子節點(diǎn)的兒子樹(shù)個(gè)數在M/2和M之間。如果兒子樹(shù)個(gè)數因為分裂超過(guò)了M則此時(shí)需要向上遞歸分裂父節點(diǎn),當找到一個(gè)不需要再分裂的父節點(diǎn)則停止分裂。該分裂過(guò)程直到根節點(diǎn),如果需要分裂根節點(diǎn),則會(huì )產(chǎn)生兩個(gè)根,故需要創(chuàng )建一個(gè)新的根來(lái)將這兩個(gè)根作為兒子節點(diǎn),此時(shí)樹(shù)的高度會(huì )增加1。

  2. 每個(gè)非葉子節點(diǎn)的關(guān)鍵字的值從左到右依次變大,第i個(gè)關(guān)鍵字代表子樹(shù)i+1中的最小關(guān)鍵字;(其中對于根節點(diǎn)來(lái)說(shuō)i在1到(2到M)之間,其他非葉子節點(diǎn)則是1到(M/2到M)之間);

  3. B樹(shù)的所有數據項都存放到葉子節點(diǎn),非葉子節點(diǎn)不存放數據,非葉子節點(diǎn)只存放用于指示搜索方向的關(guān)鍵字,即索引。這樣有利于將更多的非葉子節點(diǎn)加載到內存中,方便進(jìn)行數據查找;

  4. 所有葉子節點(diǎn)都在相同的深度并且每個(gè)葉子節點(diǎn)包含L/2到L項數據。

 M和L的大小選擇

  1. M為B樹(shù)的階數或者說(shuō)是路數

  2. L為每個(gè)葉子節點(diǎn)最多存放的數據項個(gè)數

  3. 在B樹(shù)中,每個(gè)節點(diǎn)都是一個(gè)磁盤(pán)區塊,所以需要根據磁盤(pán)區塊的大小來(lái)決定M和L。

 磁盤(pán)區塊大小與M的計算

  1. 每個(gè)非葉子節點(diǎn)存放了關(guān)鍵字和指向兒子樹(shù)的指針,具體數量為:M階的B樹(shù),每個(gè)非葉子節點(diǎn)存放了M-1個(gè)關(guān)鍵字和M個(gè)指向兒子樹(shù)的指針,故加入每個(gè)關(guān)鍵字的大小為8字節(如Java的long類(lèi)型就是8字節),每個(gè)指針為4字節,則M階B樹(shù)的每個(gè)非一葉子節點(diǎn)需要:8 * (M-1) + 4 * M = 12M - 8個(gè)字節。

  2. 如果規定每個(gè)非葉子節點(diǎn)(磁盤(pán)區塊)占用內存不超過(guò)8K,即8192,則M最大為683,即683*12-8=8192。

 葉子節點(diǎn)數據項個(gè)數L

  1. 假如每個(gè)數據項大小也是256字節,則由于磁盤(pán)區塊大小為8K,即8192個(gè)字節,而每個(gè)葉子節點(diǎn)可以存放L/2到L個(gè)數據項,所以每個(gè)葉子節點(diǎn)最多存放:8192/256=32個(gè)數據項,即L的大小為32。

  2. 一棵5階的B樹(shù)的結構如下,即M和L等于5:其中每個(gè)非葉子節點(diǎn)包含最多M-1=5-1=4個(gè)關(guān)鍵字,包含M,即5個(gè)指向子樹(shù)指針。L等于5,則每個(gè)葉子節點(diǎn)最多存放5個(gè)數據項。

 

B+樹(shù)

B+樹(shù)結構跟B樹(shù)基本一致,唯一的區別是B+樹(shù)的葉子節點(diǎn)之間通過(guò)指針相連形成一個(gè)鏈表,故便于遍歷所有的葉子節點(diǎn),即獲取所有或者搜索關(guān)鍵字某一范圍的所有數據項。的InnoDB存儲引擎就是會(huì )用B+樹(shù)作為索引實(shí)現。

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

久久婷婷五月综合色欧美蜜芽| 白丝兔女郎M开腿SM调教室| 亚洲A级成人片在线观看| 亚洲av无码专区在线亚| 国产成人亚洲综合色影视| 国产亚洲精品欧洲在线观看|