MySQL語句執行過程

2022-01-10 10:33:51 字數 909 閱讀 9541

目錄平常我們看到的只是一條語句執行出來的結果,並不知道中間發生了什麼,今天就來**一下,mysql語句的執行過程。

每次使用mysql會先連線到資料庫上面,聯結器負責跟客戶端進行連線

mysql -u root -p
然後根據密碼,判斷我登陸進去會有什麼許可權,並分配許可權給我

通過show processlist可以檢視客戶端連線的狀態

當連線建立完成之後,mysql會對所執行的查詢語句進行查詢,有沒有在快取中,如果有直接返回快取的查詢結果,不需要執行下一步了。

當語句不存在快取中,通過分析器繼續分析。

不建議使用查詢快取,因為表的資料的更改都會使快取失效,適合用查詢快取的表,比如經常不用更改的資料,還有靜態資料。如果硬要走快取可以顯示指定sql_cache

select sql_cache * from student where id=1;
分析器會將sql語句識別,關鍵字識別,每乙個單詞代表什麼,然後會根據這些識別能否滿足sql語法,滿足不了會提示你哪部分錯誤。比如你乙個單詞輸入錯誤,分析器會將錯誤直接提示出來。

優化器是用來決定表的索引使用,以及表的連線順序等等,來達到最快的速度。

當優化完成之後,執行器開始執行sql語句,當許可權不足的時候會提示錯誤。執行器根據表的引擎獲取介面。

對資料一行行進行判斷,直到表的最後一行,最後把結果集返回給客戶端。sql語句到這裡就執行完成了

在mysql中有乙個慢查詢日誌,有乙個讀取行的記錄字段rows_examined,這個就是讀取每行時累加的資料。

MySQL語句執行過程

查詢語句 許可權校驗 快取查詢 分析器 優化器 執行器 許可權校驗 執行器 引擎。更新語句 分析器 許可權校驗 執行器 引擎 redolog prepare binlog redolog commit。mysql主要分為2部分 server層和儲存引擎層。查詢快取 執行查詢語句的時候,會先查詢快取 ...

mysql 語句執行的過程

實際上mysql執行的每一步都比較複雜,具體的過程如下 1 mysql客戶端和伺服器通訊 mysql客戶端和伺服器之間的通訊協議是 半雙工 的,這意味著,在任何乙個時刻,要麼由伺服器向客戶端傳送資料,要麼由客戶端向伺服器傳送資料,這兩個動作不能同時發生。這種協議讓mysql通訊簡單快速,但也限制了m...

MySQL查詢語句執行過程

先上圖 眾所周知在mysql資料庫應用中查詢請求是使用最多的,假設我們輸入下面的sql,通過客戶端請求mysql伺服器,會得到乙個包含user的結果集。但是,其中mysql的處理過程我們並不了解,那麼下面就讓我們一起看看在查詢請求前後mysql服務端發生了些什麼吧。如上圖所示,整張圖由三部分組成,從...