數(shù)據(jù)庫引擎 mysql,mysql怎么運行出結(jié)果?
步驟如下:
1、數(shù)據(jù)更新時執(zhí)行器先找buffer pool緩存池中,如果在緩沖池中,同時返回給執(zhí)行器。
2、如果未命中緩存,需要先從磁盤讀入內(nèi)存,然后再返回給執(zhí)行器。
3、不管是否命中緩存,都需要將更新前的舊數(shù)據(jù)寫入到undo中。
4、更新內(nèi)存,此時變成臟數(shù)據(jù),后續(xù)會調(diào)用接口將數(shù)據(jù)落盤。
5、同時將這個更新操作記錄到redo log里面,此時redo log處于 prepare 狀態(tài)。然后告知執(zhí)行器執(zhí)行完成了,隨時可以提交事務(wù)。
7、執(zhí)行器生成這個操作的binlog,并把binlog寫入磁盤。
8、執(zhí)行器調(diào)用引擎的提交事務(wù)接口,引擎把剛剛寫入的redo log改成提交狀態(tài),更新完成。
最后數(shù)據(jù)落盤,已運行出結(jié)果。