一條查詢SQL查詢語句的執行原理

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



1.查詢SQL發送請求
mysql


客戶端將查詢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 inwhere clause’


(2)sql是否有該表的的操做權限;若是錯誤
nginx

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


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


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

web


一、Spring Boot 中 Tomcat 是如何啓動的?sql


二、最詳細的 IDEA 中使用 Debug 教程編程


三、最詳細的maven教程,能夠收藏!後端


四、精選 10 個Java後臺開源項目!緩存



本文分享自微信公衆號 - Java後端編程(java_hdbc)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。bash

相關文章
相關標籤/搜索