目錄
mysql架構查詢執行流程
圖解
描述?
mysql架構查詢執行流程
圖解
描述?
用戶連接到數據庫后,由連接器處理
- 連接器負責跟客戶端建立連接、獲取權限、維持和管理連接
客戶端發送一條查詢給服務器
- 服務器先檢查查詢緩存,如果命中緩存,則立即返回存儲在緩存中的結果 ; 否則進入下一階段
服務器進行SQL解析、預處理得到解析樹
- 分析器主要有兩步: 詞法分析和語法分析 ;?預處理器根據mysql規則檢查解析樹是否合法
- 語法解析器和預處理:mysql通過關鍵字將sql語句進行解析,并生成一顆對應的 “解析樹”
由優化器生成對應的執行計劃(這個過程中任何語法等錯誤都可能終止查詢)
- 優化器是在表里面有多個索引的時候,決定使用哪個索引 / 在一個語句有多表關聯的時候,決定各個表的連接順序
mysql通過分析器知道了你要做什么,通過優化器知道了該怎么做,于是就進入了執行器階段,開始執行語句
- 開始執行的時候,要先判斷一下你對這個表有沒有執行查詢的權限
- 如果沒有,就會返回沒有權限的錯誤
- 如果有權限,mysql根據優化器生成的執行計劃,調用存儲引擎的 API 來執行查詢
最后將結果返回給客戶端,并且會將結果存放到查詢緩存中
參考 --?MySQL 查詢執行的過程 - Java程序員進階 - 博客園