官方的圖
自行畫的圖
第一步:
連接器 首先我們要連接上這個數據庫,連接器負責建立連接,判斷認證是否通過等。
第二部:
查詢緩存 mysql拿到請求后首先判斷請求的查詢語句是否有緩存,是否命中緩存,但是不推薦使用mysql的緩存,官方也不推薦,因為只要有一條數據更新表的緩存就會被刪除,降低效率
第三步:
分析器 沒有命中緩存的話就要開始執行語句了,首先對sql語句進行解析, 首先做 “詞法解析”,分析出sql語句的關鍵詞等字符串代表什么含義,然后通過”語法分析“判斷這個sql是否滿足語法標准。
第四步:
優化器 優化sql執行的速度,比如執行的索引、表連接(join)的執行順序,然后決定出最快的執行方案
第五步:
執行器 判斷用戶對這個表是否有權限,有的話就會根據這個表的引擎執行通過優化器給出的最優執行方案去執行,然后返回結果