目錄
- 一、MySQL引擎層BufferPool工作過程圖解
- 二、MySQL引擎層BufferPool工作過程原理
一、MySQL引擎層BufferPool工作過程圖解
-
圖解
二、MySQL引擎層BufferPool工作過程原理
-
首先關閉自動提交,執行一條修改語句。
SET AUTOCOMMIT =0; update employees set name='張三' where id=1:
-
客戶端連接mysql服務層,再由服務層的執行器去調用innoDB引擎,首先會去innoDB引擎的BufferPool中查看id=1的數據有沒有在BufferPool中進行緩存,
-
如果有,則直接更新BufferPool中的緩存,
-
如果沒有,則去磁盤.idb文件中去加載id=1的數據,根據索引找到id=1的數據頁,找到數據頁后,把整個數據頁緩存在BufferPool中,從而針對id=1的數據進行修改。把修改之前的數據存放到Undolog中來進行備份,為后續的數據回滾、事務隔離相關的操作。
-
更新完數據后,BufferPool中的頁成為臟頁,因為此時BufferPool中id=1的數據跟磁盤文件id=1的數據它們的name屬性的值已經不一致了。
-
此時需要將臟頁的數據進行提交,同步到磁盤文件中,然后才會恢復到正常頁。
COMMIT;