日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

在MySQL數據庫的innodb存儲引擎中,數據是按照主鍵以B+樹的形式存儲的。如果在建表的時候沒有指定主鍵,那么引擎會自動添加一列主鍵。

數據庫:innodb數據組織形式

B+樹

B+樹是一種平衡樹,即根節點到各個葉子節點的高度不超過1。在B+樹中,所有記錄節點都是按照鍵值的大小順序存在同一層的葉子節點上,由各個葉子節點指針進行鏈接。B+的形式如上圖所示。從上圖中,如果用戶從最左邊的葉子節點遍歷即可得到所有鍵值的順序排序:4、7、10、15、25、36、50、59、61、65、75、80、85、90。

平時我們常接觸的查找結構是平衡二叉樹或者紅黑樹。為什么innodb存儲引擎選擇了B+樹呢?首先我們知道innodb的數據存儲磁盤上。由于磁盤IO相對于CPU和內存而言要慢很多,所以減少磁盤IO是提升性能的關鍵,另外對于機械磁盤而言順序讀取要比隨機讀取的性能高出1到2個數量級。我們來看上圖中的例子,在查找時,可以先將根節點一次讀入內存,再進行二分法查找,定位到葉子節點的位置之后,也可以一次將葉子節點加載到內存在進行查找。這樣基本上只需要2次IO就能找到數據了。對于平衡二叉樹或者紅黑樹就需要更多次的IO,并且這些IO都是離散讀,性能較差。

innodb的主鍵又被稱為聚集索引。通過聚集索引可以直接查找到整條記錄(因為B+樹的葉子節點就是數據節點,存儲了數據)。innodb還有一種輔助索引。這是一個二級索引。它也是B+樹組織的,但是葉子節點上的數據,不是數據,而是聚集索引。一個輔助索引的查找的大概過程是:在輔助索引上找到聚集索引,再通過聚集索引找到數據??梢钥闯鱿鄬τ诰奂饕?,輔助索引的查找過程更長,所以一般innodb更傾向于使用聚集索引。但是也有些情況下,查找是搜索輔助索引就能完成。比如:一張表:t(a,b,c),其中a是主鍵,b是輔助索引,對于select b from t where b > 10或者select count(*) from t where b > 10都是不需要再查找聚集索引的。

我們上面提到了磁盤的順序讀的性能要明顯高于隨機讀。我們再來看輔助索引的查找過程。輔助索引也是B+樹組織的,葉子節點是按照輔助索引的值來排序的。這就導致了,如果我們按照輔助索引的順序去聚集索引查找時,是隨機讀。innodb為了提升性能,有一種優化,對于輔助索引的范圍查找,先找出這些聚集索引,再按照聚集索引進行排序,按照這個順序去聚集索引中查找,這樣可以盡量保證順序讀,并且可以充分利用緩存。

分享到:
標簽:innodb
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定