平常我們看到的只是一條語句執行出來的結果,並不知道中間發生了什麼,今天就來**一下,mysql語句的執行過程。
1.聯結器
每次使用mysql會先連線到資料庫上面,聯結器負責跟客戶端進行連線
mysql -u root -p
然後根據密碼,判斷我登陸進去會有什麼許可權,並分配許可權給我
通過 show processlist可以檢視客戶端連線的狀態
2.查詢快取
當連線建立完成之後,mysql會對所執行的查詢語句進行查詢,有沒有在快取中,如果有直接返回快取的查詢結果,不需要執行下一步了。
當語句不存在快取中,通過分析器繼續分析。
不建議使用查詢快取,因為表的資料的更改都會使快取失效,適合用查詢快取的表,比如經常不用更改的資料,還有靜態資料。如果硬要走快取可以顯示指定sql_cache
select sql_cache * from student where id=1;
3.分析器
分析器會將sql語句識別,關鍵字識別,每乙個單詞代表什麼,然後會根據這些識別能否滿足sql語法,滿足不了會提示你哪部分錯誤。比如你乙個單詞輸入錯誤,分析器會將錯誤直接提示出來。
4.優化器
優化器是用來決定表的索引使用,以及表的連線順序等等,來達到最快的速度。
5.執行器
當優化完成之後,執行器開始執行sql語句,當許可權不足的時候會提示錯誤。執行器根據表的引擎獲取介面。
對資料一行行進行判斷,直到表的最後一行,最後把結果集返回給客戶端。sql語句到這裡就執行完成了
在mysql中有乙個慢查詢日誌,有乙個讀取行的記錄欄位rows_examined ,這個就是讀取每行時累加的資料。
mysql 語句分析 MySQL語句執行分析
今天客戶那邊遇到乙個問題 多選檔案進行操作,資料量一大後台處理就特別慢,瀏覽器顯示504超時。為了驗證問題是否出在sql語句,所以用以下方法來分析 查詢sql執行記錄 explain 分析 mysql 語句執行時間 下面會分別介紹三個方法的開啟方法。查詢sql執行記錄 查詢日誌功能是否開啟 show...
mysql執行語句 mysql執行sql語句過程
流程概述 mysql得到sql語句後,大概流程如下 1.sql的解析器 負責解析和 sql 2.預處理器 對解析後的sql樹進行驗證 3.查詢優化器 得到乙個執行計畫 4.查詢執行引擎 得到資料結果集 5.將資料放回給呼叫端。流程圖如下所示 分發器及快取階段 首先,如果系統的快取功能開啟著的話,sq...
mysql 執行多條語句
在看專案的是看到mysql版本的專案,發現執行多條sql語句是都是先分離一條條的資料庫再一條條執行,我想應該有辦法一條條執行的吧 所以今天特意的查詢了一下 在jdbc下說可以設定連線字串的時候設定一下 設定成如下的 jdbc mysql 192.168.3.180 sample?user root ...