1、inner DB
-
B+樹 vs B樹
- B+樹只在葉子節(jié)點存儲數據,B樹的所有節(jié)點都存儲數據;因此B+樹在索引階段只需要IO索引段即可;
- B+樹和B樹都是平衡樹,平衡樹的左右結點的高度差不大于1
- B+樹的葉子結點之間以雙向鏈表鏈接和順序存儲的,方便磁盤的順序讀取和查找
innerDB vs myasim
-
索引段和數據段
- innerDB的索引和數據是分開的,索引過程不讀取數據,索引的終點是數據頁,數據頁內再通過二叉樹查找行;
-
聚集索引和輔助索引
- 聚集索引即主鍵索引,其他索引都是輔助索引,其他索引的終點是聚集索引,聚集索引的終點是數據頁;如果使用聚集索引的行鎖,鎖的是目標行,如果走輔助索引還是需要通過聚集索引鎖行
-
有時候輔助索引的查詢結果再聚集索引上比較分散導致隨機讀,此時有可能不走輔助索引,退步的聚集索引;
來自搜索
自適應Hash優(yōu)化:innerDB會對熱點讀的數據行按照固定的where條件模式,自動創(chuàng)建hash索引,一次IO定位。
全文索引:倒排索引
-
數據的冷熱
- 查詢多+熱點明顯,效率最高,最理想
- 查詢多+冷熱均勻,在內存允許的情況下,進行查詢預熱可以抗量;
- 修改多+熱點明顯,tps會受影響,盡可能鎖定聚集索引
- 修改多+熱點不明顯,tps不受影響
-
其他優(yōu)化
- mysql申請的頁都是以磁盤磁道單元為基礎的,每一行最少的尋軌跡,主鍵索引相鄰的行存儲在一頁
