B+樹索引介紹
B+樹索引的本質是B+樹在數據庫中的實現。但是B+樹索引有一個特點是高扇出性,因此在數據庫中,B+樹的高度一般在2到3層。也就是說查找某一鍵值的記錄,最多只需要2到3次IO開銷。按磁盤每秒100次IO來計算,查詢時間只需0.0.2到0.03秒。
數據庫中B+樹索引分為聚集索引(clustered index)和非聚集索引(secondary index).這兩種索引的共同點是內部都是B+樹,高度都是平衡的,葉節點存放着所有數據。不同點是葉節點是否存放着一整行數據。
(1) 聚集索引(innoDB)
Innodb存儲引擎表是索引組織表,即表中數據按主鍵順序存放。而聚集索引就是按每張表的主鍵構造一顆B+樹。並且
葉節點存放整張表的行記錄數據。每張表只能有一個聚集索引(一個主鍵)。
聚集索引的另一個好處是它對於主鍵的排序查找和范圍的速度非常快。葉節點的數據就是我們要找的數據。
(2)高度計算
InnoDB存儲引擎默認一個數據頁大小為16kb,非葉子節點存放(key,pointer),pointer為6個字節,key為4個字節,即非葉子節點能存放16kb/14左右的key,pointer,而葉子節點如果一條數據大小為100字節,那一個葉子節點大約可存放160條數據。
如果高度為3,則可存放數據為:16kb/14 * 16kb/14 * 160大約1億多數據。
因此InnoDB存儲引擎b+樹的高度基本為2-3.
