天天看點

MySQL · 源碼分析 · InnoDB 異步IO工作流程

在mysql5.6中,innodb的異步io主要是用來處理預讀以及對資料檔案的寫請求的。而對于正常的頁面資料讀取則是通過同步io進行的。到底二者在代碼層面上的實作過程有什麼樣的差別? 接下來我們将以linux native io的執行過程為主線,對io請求的執行過程進行梳理。

os_aio_array_t

os_aio_slot_t

MySQL · 源碼分析 · InnoDB 異步IO工作流程

實體資料頁操作入口函數os_aio_func

負責通知linux核心執行native io請求的函數os_aio_linux_dispatch

io線程負責監控aio請求的主函數fil_aio_wait

io線程負責處理native io請求的函數os_aio_linux_handle

等待native io請求完成os_aio_linux_collect

綜上重點對innodb navtive io讀寫資料檔案從源碼角度進行了分析,有興趣的讀者也可以繼續了解innodb自帶的simulated io的實作過程,原理雷同native io,隻是在實作方式上自己進行了處理。本篇文章對innodb io請求的執行流程進行了梳理,對重點資料結構以及函數進行了分析,希望對讀者日後進行源碼閱讀及修改有所幫助。

繼續閱讀