1奠支、客戶端發(fā)送一條查詢給服務(wù)器
2税肪、服務(wù)器會(huì)檢查查詢緩存晾浴,如果緩存中存在則會(huì)校驗(yàn)權(quán)限负乡,如果權(quán)限通過將直接返回結(jié)果
3、如果緩存中不存在則通過解析器進(jìn)行sql解析脊凰,解析sql語法是否存在錯(cuò)誤,如果錯(cuò)誤會(huì)停止查詢
4茂腥、通過預(yù)處理器狸涌,檢查數(shù)據(jù)庫列、數(shù)據(jù)表是否存在最岗,解析別名是否有歧義
5帕胆、再由優(yōu)化器進(jìn)行查詢優(yōu)化,主要是將SQL轉(zhuǎn)化為執(zhí)行計(jì)劃般渡,一條SQL有多種執(zhí)行方式懒豹,查詢優(yōu)化器就是為了找到代價(jià)最低的那一條方式芙盘,生成執(zhí)行計(jì)劃
6、mysql根據(jù)查詢計(jì)劃脸秽,調(diào)用存儲(chǔ)引擎api來執(zhí)行查詢
7儒老、將結(jié)果返回客戶端
ps:查詢緩存
在解析查詢SQL的時(shí)候,如果這個(gè)查詢是打開的记餐,那么MySQL會(huì)優(yōu)先在緩存中查詢?cè)揝QL是否命中驮樊,這個(gè)過程是一個(gè)大小寫敏感的過程,即使只有一個(gè)字節(jié)不同片酝,也不會(huì)命中緩存囚衔,如果恰好命中了緩存,則下一步不是返回結(jié)果雕沿,而是查看權(quán)限是否有問題练湿,如果檢測(cè)權(quán)限有問題,則不會(huì)返回結(jié)果审轮,如果權(quán)限沒有問題鞠鲜,則會(huì)返回結(jié)果給客戶端。這一點(diǎn)很重要断国,需要保持謹(jǐn)慎贤姆。