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