【持續更新,自己整理用】
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中根結點是會預讀到記憶體中的,所以結點的物理地址固定會比較好!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/228964.html
標籤:MySQL
下一篇:SQl 資料庫 使用介紹
