1. 程式人生 > 其它 >B+Tree

B+Tree

1.非葉子節點,不存放索引對應資料,存放的是下級葉節點中最小鍵值(表中主鍵),和子節點的指標(位元組點地址資訊)。 2.葉子節點存放的是索引值和索引所對應的資料,頁中資料以連結串列形式存放,且是順序存放。 3.頁與頁之間使用雙向連結串列連結,每頁資料大小為16KB,一般主鍵表中主鍵型別為INT(佔四個位元組)和BIGINT(佔8個位元組),指標大小在原始碼中設定為6個位元組。也就是說一個page儲存(16KB/(8B+6B)=1170個鍵值,可以算出一個高度為2的B+Tree可以存放1170*1170=1368900這樣的資料。假設一條資料大小為1K那麼一頁可以存放16條資料(這裡假設一行記錄的資料大小為1k,實際上現在很多網際網路業務資料記錄大小通常就是1K左右)。那麼高度為3的B+Tree可以存放1170*1170*16=21902400,所以在InnoDB中B+樹高度一般為1-3層,它就能滿足千萬級的資料儲存。在查詢資料時一次頁的查詢代表一次IO,所以通過主鍵索引查詢通常只需要1-3次IO操作即可查詢到資料。