天天看點

InnoDB存儲引擎(engine)主線程(master thread)工作流程分析

該書作者提供的master thread的僞代碼:

解釋:

log buffer flush to disk 

把重做日志緩存(redo log)重新整理到日志檔案(log file)中

merge insert buffer

合并插入緩存,這是InnoDB引擎特有的,指對于非聚集索引的插入或更新,不是每一次直接直接插入到索引頁中,而是先判斷插入的非聚集索引是否在緩沖池中。如果在,直接插入;如果不在,則先放主一個插入緩存區中,然後再以一定的頻率插插入緩沖和非聚集索引頁子節點的合并操作。通常是多個插入合并到一個操作中。

full purge

全清理操作,指删除無用的Undo頁。對表執行update、delete這類操作時,原先的行被标記為删除,但是因為一緻性讀(consistent read)的關系,需要保留這些行版本的資訊。但是在full purge過程中,InnoDB存儲引擎會判斷目前事務系統中已被删除的行是否可以删除,比如有時候可能還有查詢操作需要讀取之前版本的Undo資訊,如果可以,InnoDB會立即将其删除。注意full purge隻會清除不再使用的Undo頁。

buffer pool flush dirty page

對比磁盤上的資料塊,指把緩沖池中修改過的資料頁(修改過的data page,即髒頁dirty page)重新整理到硬碟上。

fuzzy checkpoint 

産生模糊檢查點,檢查點有點類似于windows作業系統中的系統還原點,會把最老日志序列号(LSN)的頁寫到硬碟上。

innodb_max_dirty_pages_pct 

InnoDB存儲引擎中的一個動态變量,指緩沖池中髒頁的比例。理論上更小的值,更大的IO。

從InnoDB Plugin開始可以通過show engine innodb status來檢視目前master thread的狀态資訊。

     本文轉自xiaoyuwang 51CTO部落格,原文連結:http://blog.51cto.com/wangxiaoyu/471638,如需轉載請自行聯系原作者