溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql的sql語句執行流程

發布時間:2020-08-19 01:37:26 來源:ITPUB博客 閱讀:188 作者:lusklusklusk 欄目:MySQL數據庫

1、client和server建立連接,client發送sql至server(對應連接器這一過程)

2、server如果在查詢緩存中發現了該sql,則直接使用查詢緩存的結果返回給client,如果查詢緩存中沒有,則進入下面的步驟(對應查詢緩存這一過程,8.0這一過程已經不存在了,8.0完全拋棄了這個功能)

3、server對sql進行語法分析,識別出sql里面的字符串是否符合標準,比如select關鍵字不能寫錯(對應分析器這一過程)

4、server對sql進行語義分析,識別出sql里面的字符串的具體意思是什么,比如T1是表名,C1是列名(對應分析器這一過程。3、4步其實解析的過程,這個解析的過程是分析器的工作不是優化器的工作)

5、server確定sql的執行路徑,比如走索引還是全表,多表連接時哪張表先走哪張表后走,當你的where條件的可讀性和效率有沖突時mysql內部還會自動進行優化,也就是大家理解的重寫where子句(對應優化器這一過程)

6、server對執行sql的用戶進行權限檢查,比如對表是否有權限執行(對應執行器這一過程)

7、server執行該sql語句,發送結果給client(對應執行器這一過程)

連接器-->查詢緩存-->分析器-->優化器-->執行器

如果表 T1 中沒有字段 C1,而執行select * from T1 where C1=1會報錯不存在C1這個列,這個過程對應上面第4個過程,對應分析器這一過程

如果用戶對T1表沒有權限,而執行select * from T1 where C1=1會報錯對表T1沒有權限,這個過程對應上面第6個過程,對應執行器這一過程

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女