1. 程式人生 > 實用技巧 >Mysql詳解--知識整理

Mysql詳解--知識整理

【持續更新,自己整理用】
B-Tree 與 B+Tree

  • B樹索引最通俗易懂的介紹 - xiaohouye - 部落格園 (cnblogs.com)
  • B樹非葉子節點由關鍵字+ 資料組成,所以遍歷過程中就能獲取到資料。而B+樹的節點都會出現在葉子節點,非葉子節點只有關鍵字,資料全部在葉子節點。並且葉子節點間有指標連線
  • 計算機中磁碟儲存資料最小單元是扇區一個扇區的大小是 512 位元組,而檔案系統(例如XFS/EXT4)他的最小單元是,一個塊的大小是 4k,而對於我們的 InnoDB 儲存引擎也有自己的最小儲存單元——(Page),一個頁的大小是 16K
  • 為什麼關係型資料庫B+Tree來儲存資料:
    【1.B-Tree每個節點需要儲存(關鍵字+資料),而B+Tree只儲存關鍵字;每個頁的大小有限,所以同一個頁中,B+Tree能儲存更多的資料。2.B+Tree 可以通過找到關鍵字資料後,通過遍歷連結串列方便的找到指定範圍內的關鍵字】
  • InnoDB也有頁的概念,預設頁的大小為16K,即每次讀取資料時是4*4K。。資料庫頁的分裂如下:1-10的資料原本儲存在Page1中,只有一個頁,後來因為添加了11,一個頁裝不下了,需要分裂。分裂是將原來的頁複製到一個新的頁,然後將原來的頁設定為根節點,成為了不存放資料,而是隻存放關鍵字的頁,然後再新建一個頁放多出來的那個11。分裂後有了3個頁。
  • 將原來根節點的資料複製到新的一頁,而不是直接建立一個新的頁作為根節點,是因為:如果是重新建立根結點,那根結點儲存的實體地址可能經常會變,不利於查詢。並且在
    innodb中根結點是會預讀到記憶體中的,所以結點的實體地址固定會比較好!