mysql b樹 io 讀取 B樹 B 樹發展史

2021-10-20 01:34:13 字數 2496 閱讀 7056

紅黑樹: 在平衡二叉樹穩定性的基礎上,再優化一下,減少旋轉次數

特性:1、每個節點要麼是紅色,要麼是黑色。

2、根節點必須是黑色。

3、紅色節點不能連續(也即是,紅色節點的孩子和父親都不能是紅色)。

4、對於每個節點,從該點至null(樹尾端)的任何路徑,都含有相同個數的黑色節點。

二叉樹特點:查詢速度和比較次數最小,但是磁碟io,當資料量過大的時候,索引大小可能有幾個g,不可能全都載入到記憶體

引出下面的樹更穩

b樹與b+樹

b樹 、b - 樹都讀b樹。

b樹與b+樹區別:

b樹每個節點都儲存資料,所有節點組成這棵樹。b+樹只有葉子節點儲存資料(b+數中有兩個頭指標:乙個指向根節點,另乙個指向關鍵字最小的葉節點),葉子節點包含了這棵樹的所有資料,所有的葉子結點使用鍊錶相連,便於區間查詢和遍歷,所有非葉節點起到索引作用。

b樹中葉節點包含的關鍵字和其他節點包含的關鍵字是不重複的,b+樹的索引項只包含對應子樹的最大關鍵字和指向該子樹的指標,不含有該關鍵字對應記錄的儲存位址。

b樹中每個節點(非根節點)關鍵字個數的範圍為[m/2(向上取整)-1,m-1](根節點為[1,m-1]),並且具有n個關鍵字的節點包含(n+1)棵子樹。b+樹中每個節點(非根節點)關鍵字個數的範圍為[m/2(向上取整),m](根節點為[1,m]),具有n個關鍵字的節點包含(n)棵子樹。

b+樹中查詢,無論查詢是否成功,每次都是一條從根節點到葉節點的路徑。

b樹的優點:b樹的每乙個節點都包含key和value,因此經常訪問的元素可能離根節點更近,因此訪問也更迅速。

m階b+數特點

有n棵子樹的非葉子結點中含有n個關鍵字(b樹是n-1個),這些關鍵字不儲存資料,只用來索引,所有資料都儲存在葉子節點(b樹是每個關鍵字都儲存資料)。

所有的葉子結點中包含了全部關鍵字的資訊,及指向含這些關鍵字記錄的指標,且葉子結點本身依關鍵字的大小自小而大順序鏈結(葉子節點組成乙個鍊錶)。

所有的非葉子結點可以看成是索引部分,結點中僅含其子樹中的最大(或最小)關鍵字。

通常在b+樹上有兩個頭指標,乙個指向根結點,乙個指向關鍵字最小的葉子結點。

同乙個數字會在不同節點中重複出現,根節點的最大元素就是b+樹的最大元素。

b+樹的優點

所有的葉子結點使用鍊錶相連,便於區間查詢和遍歷。b樹則需要進行每一層的遞迴遍歷。相鄰的元素可能在記憶體中不相鄰,所以快取命中性沒有b+樹好。

b+樹的中間節點不儲存資料,能容納更多節點元素。

b樹和b+樹的共同優點

考慮磁碟io的影響,它相對於記憶體來說是很慢的。資料庫索引是儲存在磁碟上的,當資料量大時,就不能把整個索引全部載入到記憶體了,只能逐一載入每乙個磁碟頁(對應索引樹的節點)。所以我們要減少io次數,對於樹來說,io次數就是樹的高度,而「矮胖」就是b樹的特徵之一,m的大小取決於磁碟頁的大小。

雖然查詢次數比二叉樹多,尤其當單一節點元素多時,但是相比磁碟io速度,記憶體中的比較耗時幾乎可以忽略

所以只要樹的高度是夠低,io次數是足夠少,就可以提公升查詢效能

io:每一次讀取的資料稱之為一頁.

b樹示意圖:

以下為 b+樹示意圖:

在mysql中,最常用的兩個儲存引擎是myisam和innodb,它們對索引的實現方式是不同的

myisam : data存的是資料位址。索引是索引,資料是資料。索引放在xx.myi檔案中,資料放在xx.myd檔案中,所以也叫非聚集索引

innodb: data存的是資料本身。索引也是資料。資料和索引存在乙個xx.idb檔案中,所以也叫聚集索引。

我們的mysql資料庫用的innodb。

了解了資料結構再看索引,一切都不費解了,只是順著邏輯推而已。另加兩種儲存引擎的區別:

1、myisam是非事務安全的,而innodb是事務安全的

2、myisam鎖的粒度是表級的,而innodb支援行級鎖

3、myisam支援全文型別索引,而innodb不支援全文索引

4、myisam相對簡單,效率上要優於innodb,小型應用可以考慮使用myisam

5、myisam表儲存成檔案形式,跨平台使用更加方便

6、myisam管理非事務表,提供高速儲存和檢索以及全文搜尋能力,如果在應用中執行大量select操作可選擇

7、innodb用於事務處理,具有acid事務支援等特性,如果在應用中執行大量insert和update操作,可選擇。

B樹,B 樹,B 樹,B 樹

小彰的部落格 b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點...

B樹 B 樹 B 樹 B 樹

b 樹即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left 和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點關鍵字小,就...

B樹 B 樹 B 樹 B 樹

b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點關鍵字小,就進...