Mysql系列01 -- bTree+基礎

https://img2018.cnblogs.com/blog/1644694/201905/1644694-20190505155026646-1387513390.png

  1. bTree+只有葉子節點存放數據,非葉子節點存放鍵值+指針
  2. bTree+包含了順序,用二分查找法進行搜索,所以用自增id有很大好處:新索引在索引右邊插入即可,不需要對葉子節點進行挪動(當前頁數據剛好滿時,甚至需要對頁分裂)
  3. 主鍵索引(聚簇索引)中包含了整行的完整數據;非主鍵索引(二級索引)最終指向改行數據的主鍵Id;所以開發中提倡多用getEntityById這樣的實體訪問,訪問性能最佳
  4. 非主鍵索引,先找到pk,然後從pk加載對應的數據(回表操作)
  5. 主鍵索引和非主鍵索引數據,平時都存儲在磁盤文件中;根據內存分配大小和訪問策略,熱數據駐留在緩存innodb_buffer_pool中,緩存起來
  6. 爲什麼不用bTree: 因爲B樹不管葉子節點還是非葉子節點,都會保存數據,這樣導致在非葉子節點中能保存的指針數量變少(有些資料也稱爲扇出),指針少的情況下要保存大量數據,只能增加樹的高度,導致IO操作變多,查詢性能變低

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章