
先看看一條SQL如何入庫的
應(yīng)用服務(wù)器與MySQL建立連接通過連接發(fā)送一條SQL語句(update student set score=100 where score=50)SQL依次經(jīng)過Server層的[分析器][優(yōu)化器][執(zhí)行器][執(zhí)行器]根據(jù)[執(zhí)行計(jì)劃]操作執(zhí)行引擎(InnoDB Engine)InnoDB Engine從[磁盤]數(shù)據(jù)文件中將score=50讀取到內(nèi)存[BufferPool]中在修改之前,寫入一條[undo log]將修改之前的值score=50保存起來先將緩存池[BufferPool]中score=50更新為score=100寫入一條[redo log]將修改后的score=100存起來,用于異常場景的事務(wù)[提交]寫入一條[bin log]將修改后的score=100存起來后臺IO線程將緩存池被修改的值score=100刷入磁盤這是一條非常簡單的SQL語句[update student set score=100 where score=50],從MySQL服務(wù)端接收SQL到寫入磁盤,經(jīng)過了Server層和InnoDB存儲引擎,中間摻雜著磁盤讀取、日志記錄、內(nèi)存更新、寫入磁盤。
MySQL為什么將Server層和引擎層拆分?
- 由MySQL架構(gòu)演變而來,進(jìn)而實(shí)現(xiàn)「解耦」的效果
- 針對不同的場景,使用不同的存儲引擎,靈活性更強(qiáng)
- MySQL中的數(shù)據(jù)用各種不同的技術(shù)存儲在文件中,每一種技術(shù)都使用不同的存儲機(jī)制、索引技巧、鎖定水平并最終提供不同的功能和能力
MySQL主要包含2種存儲引擎
- MyISAM(不支持事務(wù),訪問速度快)
- InnoDB(主流,支持事務(wù))
鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。