一條查詢SQL執行原理

先熟悉一下淺而易懂SQL執行的流程圖SQL查詢過程七步曲

 

1.查詢SQL發送請求

客戶端將查詢sql按照mysql通信協議傳輸到服務端。服務端接受到請求後,服務端單起一個線程執行sql

 

2.判斷是否爲select查詢語句

執行前mysql會通過命令分發器判斷其是否是一條select語句(判斷sql語句前6個字符是否爲select);

 

3.查詢緩存先行

MySQL在開啓查詢緩存的情況下,首先會先在查詢緩存中查找該SQL是否完全匹配,如果完全匹配,驗證當前用戶是否具備查詢權限,如果權限驗證通過,直接返回結果集給客戶端,該查詢也就完成了。如果不匹配繼續向下執行。

 

4.語法分析之分析器

如果在查詢緩存中未匹配成功,則將語句交給分析器作語法分析。MySQL通過分析語法知道要查的內容。這步會對語法進行檢驗,如果語法不對就會返回語法錯誤中斷查詢。如果語法不正確

You have an error in your SQL syntax

 

5.查詢之預處理器

(1)分析器的工作完成後,將語句傳遞給預處理器,檢查數據表和數據列是否存在,解析別名看是否存在歧義如果錯誤返回

 Unknown column xxx in ‘where clause’

(2)sql是否有該表的的操作權限;如果錯誤

ERROR 1142 (42000): SELECT command denied to user 'root'@'localhost' for table 'xxx'

 

6.查詢之優化器

語句解析完成後,MySQL就知道要查的內容了,之後會將語句傳遞給優化器進行優化(通過索引選擇最快的查找方式),並生成執行計劃。

 

7.查詢之執行器

最後,交給執行器去具體執行該查詢語句。執行器開始執行後,會逐漸將數據保存到結果集中,同時會逐步將數據緩存到查詢緩存中,最終將結果集返回給客戶端。


專注軟件測試行業前景分析、測試思想、管理領域分享; 系統、接口自動化測試、python學習資料以及爬蟲技術娛樂圈新鮮事好文推送 ; 訂閱號後臺回覆"測試""Python"領取系統學習資料微信掃一掃直接關注 加小編微信入學習羣:shichaogg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章