mysql的sql語句執行流程
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個過程,對應執行器這一過程
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2222570/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql執行sql語句過程MySql
- mysql如何跟蹤執行的sql語句MySql
- 檢視mysql正在執行的SQL語句MySql
- MySQL cron定時執行SQL語句MySql
- MySql定位執行效率較低的SQL語句MySql
- mysql sql語句執行超時設定MySql
- php連線mysql並執行sql語句PHPMySql
- sql語句如何執行的SQL
- 執行大的sql語句SQL
- oracle常用後臺程序及sql語句執行流程OracleSQL
- 一條SQL語句在MySQL中如何執行的MySql
- sql語句批量執行SQL
- 一條更新語句的執行流程
- 解析MySQL基礎架構及一條SQL語句的執行流程和流轉MySql架構
- SQL 語句的執行順序SQL
- Oracle SQL語句執行流程與順序原理解析OracleSQL
- 一條sql語句在mysql中是如何執行的MySql
- 一條 SQL 語句在 MySQL 中是如何執行的?MySql
- mySQL 執行語句執行順序MySql
- 查詢正在執行的sql語句及該語句執行的時間SQL
- mysql 語句的執行順序MySql
- SQL語句執行順序SQL
- toad執行sql語句SQL
- 一條查詢語句的執行流程
- SQL Server SQL語句執行順序SQLServer
- 通過分析SQL語句的執行計劃優化SQL語句SQL優化
- Laravel 獲取執行的sql語句LaravelSQL
- 查詢執行慢的SQL語句SQL
- CoreData執行過程的sql語句SQL
- 識別低效執行的SQL語句SQL
- 剖析SQL語句的執行過程SQL
- Oracle SQL 語句的執行過程OracleSQL
- 清除SQL語句的執行計劃SQL
- 查詢正在執行的SQL語句SQL
- 一個 MySQL sql 語句執行順序帶來的 bugMySql
- MySQL日誌(一條sql更新語句是如何執行的)MySql
- 通過日誌檢視mysql正在執行的SQL語句MySql
- MySQL語句執行分析(一)MySql