數據庫會使用一些方式來存儲、讀取和修改數據,在實際的數據庫管理中,數據庫會同時使用B-tree和B+tree來存儲數據。其中B-tree用于索引,B+tree用于存儲實際記錄。本文帶來B-tree在數據庫中的索引機制。
B-tree即B樹,它是一種數據架構,是MySQL的一種索引類型,以一定順序排列的節點的形式存儲數據。
B-tree存儲數據的方式是每個節點按升序存儲鍵,每個鍵包含2個指向其前后節點的鏈接。左邊節點的key小于等于當前節點的key,右邊節點的key大于等于當前節點的key。如果一個節點有n個鍵,那它最多有n+1個子節點。
B-tree索引加快了數據查詢,存儲引擎不必遍歷整個表來查找數據,它會從根節點開始。根節點位置不會包含指向子節點的指針,它通過查看子節點中的值并通過確定節點的上下界來找到正確的指針,從而便于存儲引擎查找數據。
需要注意,索引的順序會在建表過程中取決于列的順序,當一個值重疊時,會以下一個值作為排序的標準。因此索引中列的排列是非常重要的,為了獲得最佳性能,需要為同一列創建不同順序的索引。
B-tree不僅存儲索引,還存儲與該索引關聯的值,這個值鏈接到數據庫中的實際數據記錄。