InnoDB 被稱為索引組織型的儲存引擎。主鍵使用的 B-Tree 來儲存資料,即錶行。這意味著 InnoDB 必須使用主鍵。如果表沒有主鍵,InnoDB 會向表中新增一個隱藏的自動遞增的 6 位元組計數器,並使用該隱藏計數器作為主鍵。InnoDB 的隱藏主鍵存在一些問題。您應該始終在表上定義顯式主鍵,並透過主鍵值訪問所有 InnoDB 行。
InnoDB 的二級索引也是一個B-Tree。搜尋關鍵字由索引列組成,儲存的值是匹配行的主鍵。透過二級索引進行搜尋通常會導致主鍵的隱式搜尋。
什麼是 B-Tree?
一個 B-Tree 是一種針對在塊裝置上最佳化操作的資料結構。塊裝置或磁碟有相當重要的資料訪問延遲,尤其是機械硬碟。在隨機位置檢索單個位元組並不比檢索更大的資料花費的時間更少。這是 B-Tree 的基本原理,InnoDB 使用的資料頁為 16KB。
讓我們嘗試簡化 B-Tree 的描述。B-Tree 是圍繞這鍵來組織的資料結構。鍵用於搜尋 B-Tree 內的資料。B-Tree 通常有多個級別。資料僅儲存在最底層,即葉子節點。其他級別的頁面(節點)僅包含下一級別的頁面的鍵和指標。
如果要訪問鍵值的資料,則從頂級節點-根節點開始,將其包含的鍵與搜尋值進行比較,並找到要在下一級訪問的頁面。重複這個過程,直到你達到最後一個級別,即葉子節點。理論上,每個 B-Tree 級別的讀取都需要一次磁碟讀取操作。在實踐中,總是有記憶體快取節點,因為它們數量較少且經常訪問,因此適合快取。
一個簡單的三級 B-Tree 結構
InnoDB 被稱為索引組織型的儲存引擎。主鍵使用的 B-Tree 來儲存資料,即錶行。這意味著 InnoDB 必須使用主鍵。如果表沒有主鍵,InnoDB 會向表中新增一個隱藏的自動遞增的 6 位元組計數器,並使用該隱藏計數器作為主鍵。InnoDB 的隱藏主鍵存在一些問題。您應該始終在表上定義顯式主鍵,並透過主鍵值訪問所有 InnoDB 行。
InnoDB 的二級索引也是一個B-Tree。搜尋關鍵字由索引列組成,儲存的值是匹配行的主鍵。透過二級索引進行搜尋通常會導致主鍵的隱式搜尋。
什麼是 B-Tree?
一個 B-Tree 是一種針對在塊裝置上最佳化操作的資料結構。塊裝置或磁碟有相當重要的資料訪問延遲,尤其是機械硬碟。在隨機位置檢索單個位元組並不比檢索更大的資料花費的時間更少。這是 B-Tree 的基本原理,InnoDB 使用的資料頁為 16KB。
讓我們嘗試簡化 B-Tree 的描述。B-Tree 是圍繞這鍵來組織的資料結構。鍵用於搜尋 B-Tree 內的資料。B-Tree 通常有多個級別。資料僅儲存在最底層,即葉子節點。其他級別的頁面(節點)僅包含下一級別的頁面的鍵和指標。
如果要訪問鍵值的資料,則從頂級節點-根節點開始,將其包含的鍵與搜尋值進行比較,並找到要在下一級訪問的頁面。重複這個過程,直到你達到最後一個級別,即葉子節點。理論上,每個 B-Tree 級別的讀取都需要一次磁碟讀取操作。在實踐中,總是有記憶體快取節點,因為它們數量較少且經常訪問,因此適合快取。
一個簡單的三級 B-Tree 結構