Innodb索引存儲數據結構 :B+樹
特點:
1 只有葉子節點存儲真實數據,其餘節點只存放 index關鍵字+指針 。讓節點能存放更多index、減少層高。
且葉子節點存儲是有序的鏈表,有助於範圍查找和排序。
2 層高影響命中一行數據的IO操作次數。命中一個節點相當於一次IO操作。
3 每個節點16k。索引列的數據類型決定每個節點存放多少key。integer爲4字節、bigint爲8字節。
節點存儲的index越多,同樣數據量下樹的層數越低,IO操作次數越少性能越好。
平均2000w一般數據index,b+樹能保持在3-4層結構。
高度計算:https://www.cnblogs.com/songpingyi/p/10730156.html
4 數據發生變化時,樹通過分裂保證結構正確性。
5 innodb主鍵索引的葉子節點纔會保存數據地址,其他索引葉子節點只保存主鍵索引。
若沒有設置主鍵,則mysql使用隱藏列rowid作爲主鍵。