SQL執行過程

2021-09-24 08:17:29 字數 823 閱讀 7954

mysql server

pluggable storage engines

1 客戶端/服務端通訊協議

查詢快取,如果有資料返回,否則繼續

複製**

2 解析器根據解析樹解析

預處理器檢測正常繼續,否則報錯(比如要查詢的字段不存在)

複製**

3 查詢優化器

explain查詢執行計畫(好比以前我們除錯介面才能發現問題所在,現在explain找到查詢慢的原因,這是我們程式設計師最需要學習的地方)

複製**

4 查詢執行引擎

根據上一步的查詢優化指導,選擇查詢引擎進行查詢

複製**

5 結果

如果開啟了快取,快取結果後返回,否則直接返回	

複製**

1 mysql客戶端/服務端通訊

對於乙個mysql連線,或者說乙個執行緒,時刻都有乙個狀態來標識這個連線正在做什麼

query

locked

sorting result

sending data

可通過kill的方式進行連線的殺掉

2 查詢快取

判斷標準

3 查詢優化處理

mysql的查詢優化器是基於成本計算的原則,他會嘗試各種執行計畫,如要資料抽樣進行試驗(隨機的讀取乙個4k的資料塊進行分析)

or比in好

a in (1,2,3,4,5)

4 呼叫執行引擎

5 返回客戶端

sql執行過程

程式中寫的一條sql傳送到伺服器端 查詢此條sql是否存在執行計畫 如果存在則直接呼叫已經編譯好的執行計畫 否則進入下一步。如果sql計畫快取中沒有對應的執行計畫,則進行語法校驗 檢視是否存在語法錯誤 如果語法沒有錯誤則進行語義校驗,例如,表名,列名,儲存過程等等資料庫物件是否真正存在 如果語義沒有...

sql執行過程分析

我們總是寫sql語句,資料庫把結果返回給我們,那中間過程又是什麼?如果了解oracle是怎麼執行sql語句的中間過程,對我們優化sql有很大的幫助 首先了解一下執行sql,需要消耗什麼資源,cpu,記憶體,io,我們要了解什麼情況下會消耗cpu,什麼情況下消耗記憶體,什麼情況下消耗io,只有了解了這...

mysql 過程 動態執行sql

begin declare v sql varchar 500 declare v table name varchar 20 declare v date time varchar 20 set v date time date format now y m d select v date tim...