Mysql核心:INNODB儲存引擎--《十一》Insert Buffer
11.2基本概念
innodb對於自增主鍵值得插入是順序的,因此插入能有較高的插入效能。但在實際生產環境中,使用者表的主鍵僅有並只能有一個,然後表中可能存在多個輔助索引。輔助索引根據型別在插入時可以分為比較順序到的插入和隨機的插入兩種。比較順序的插入可能是時間欄位,隨機的插入可能更為廣泛。
innodb儲存引擎insert buffer的設計思想是,在插入時首先判斷插入的輔助索引葉子是否還在緩衝池中。若在則直接插入,否則將插入的記錄放到insert buffer中,然後根據一些演算法將insert buffer快取的記錄通過後臺執行緒慢慢的合併回輔助索引頁中。這樣做好處:
- 減少磁碟的離散讀取
- 將多次插入合併為一次操作
舉例子,第一列為人名,第二列為page_no(實際上page_no並不是資料,在這裡用來表示頁號):
(‘huangweiyang’, 2), (‘licao’, 10), (‘gaomingxi’, 4), (‘lishuai’, 15), (‘hejiejie’, 2)
後面的列表示原先應插入的輔助索引的page_no,可以看到頁的訪問時無序的。然而當插入到insert buffer中,刪除記錄可能完全在一個頁中,因此減少了李珊讀取。在insert buffer中,,記錄根據應插入輔助索引的葉子節點的page_no進行排序。排序完畢後,上述記錄就會從insert buffer向輔助索引合併,比如(‘huangweiyang’)(‘hejiejie’)此時就可以批量合併了 :)
注意,insert buffer 只能快取非唯一約束的索引。若是唯一索引,那麼在插入時需要判斷插入的記錄是否唯一,這需要讀取輔助索引頁。這不就完蛋了,insert buffer不起作用嘍!
11.3架構實現
11.3.1 儲存結構
不用說,B+樹!鍵值就是待插入到輔助索引頁的page_no。B+樹索引頁的大小一樣為16kb,記憶體同樣使用緩衝池。
innodb儲存引擎存在一個insert buffer bitmap頁,用來追蹤每個快取頁的剩餘空間,當剩餘空間小於某個閾值時,
佔坑
相關文章
- MySQL InnoDB儲存引擎MySql儲存引擎
- MySQL核心InnoDB儲存引擎(卷1)筆記MySql儲存引擎筆記
- MySQL InnoDB 儲存引擎探祕MySql儲存引擎
- MyISAM 儲存引擎,Innodb 儲存引擎儲存引擎
- Mysql技術內幕InnoDB儲存引擎讀書筆記--《二》InnoDB儲存引擎MySql儲存引擎筆記
- Innodb儲存引擎儲存引擎
- MySQL 引擎特性:InnoDB Buffer PoolMySql
- [Mysql技術內幕]Innodb儲存引擎MySql儲存引擎
- MySQL InnoDB儲存引擎體系結構MySql儲存引擎
- 《MySQL 效能優化》之 InnoDB 儲存引擎MySql優化儲存引擎
- MySQL儲存引擎--MyISAM與InnoDB區別MySql儲存引擎
- MySQL技術內幕:InnoDB儲存引擎MySql儲存引擎
- InnoDB儲存引擎——表儲存引擎
- MySQL儲存引擎:MyISAM和InnoDB的區別MySql儲存引擎
- MySQL儲存引擎MyISAM與InnoDB的優劣MySql儲存引擎
- Mysql innodb儲存引擎的效能最佳化MySql儲存引擎
- InnoDB儲存引擎簡介儲存引擎
- InnoDB儲存引擎檔案儲存引擎
- 總結MySQL儲存引擎MyISAM與InnoDB區別MySql儲存引擎
- 十八、Mysql儲存引擎並不只有MyISAM、InnoDB——精髓MySql儲存引擎
- MySQL高階10-InnoDB引擎儲存架構MySql架構
- MySQL 5.6 InnoDB儲存引擎體系結構圖MySql儲存引擎
- 《MySQL技術內幕:InnoDB儲存引擎》連載MySql儲存引擎
- MYSQL innodb buffer 狀態資料的儲存和載入MySql
- InnoDB儲存引擎——兩次寫儲存引擎
- InnoDB儲存引擎——記憶體儲存引擎記憶體
- InnoDB儲存引擎——Checkpoint技術儲存引擎
- InnoDB儲存引擎——插入緩衝儲存引擎
- InnoDB儲存引擎——非同步IO儲存引擎非同步
- MySQL三種InnoDB、MyISAM和MEMORY儲存引擎對比MySql儲存引擎
- MySQL技術內幕 InnoDB儲存引擎 第2版MySql儲存引擎
- MySQL儲存引擎之MyIsam和Innodb總結性梳理MySql儲存引擎
- Mysql技術內幕InnoDB儲存引擎讀書筆記--《一》Mysql體系結構和儲存引擎MySql儲存引擎筆記
- mysql儲存引擎InnoDB詳解,從底層看清InnoDB資料結構MySql儲存引擎資料結構
- MySQL 儲存引擎MySql儲存引擎
- MySQL儲存引擎MySql儲存引擎
- 你真的瞭解Innodb儲存引擎?儲存引擎
- InnoDB儲存引擎MVCC實現原理儲存引擎MVC