簡體   English   中英

B樹索引如何在mysql中工作

[英]how B-tree indexing works in mysql

當我在mysql中為表創建索引時,我看到index_type是類型BTREE 現在,盡管我了解btree,但是我並沒有默默地了解btree如何存儲索引以及數據庫如何基於此來搜索記錄。

我的意思是,btree非常適合數據庫執行讀寫大塊數據,當我們為主Primary key列類型創建索引時,據我所知,它會創建一棵樹並根據該值拆分根的值根的類型。

現在,它是否僅在樹下存儲主鍵ID或與該主鍵關聯的整個數據?

找到所需的主要ID后,數據庫如何提取記錄?

數據庫將索引的值存儲為B-Tree鍵,並將記錄指針存儲為B-Tree值。

每當您搜索包含某個索引列的特定值的記錄時,引擎就會在B-Tree中找到保存該值的鍵,並檢索指向該記錄的指針並獲取該記錄。

什么是“記錄指針”,取決於存儲引擎。

  • MyISAM ,記錄指針是MYI文件中記錄的偏移量。

  • InnoDB ,記錄指針是PRIMARY KEY的值。

InnoDB ,表本身是B-TreePRIMARY KEY作為B-Tree鍵。 這就是所謂的“聚集索引”或“索引組織表”。 在這種情況下,所有其他字段都存儲為B-Tree值。

MyISAM ,記錄存儲時沒有任何特殊順序。 這稱為“堆存儲”。

MySQL InnoDB實際上使用的是B + Tree,它比B-Tree增加了更多功能。

如:

僅葉子節點具有允許同一頁面節點中的更多鍵減少樹高的值,這將減少I / O計數。

在每個葉節點中添加雙向指針,以加快范圍搜索

B樹

B樹

B +樹

B +樹

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM