先上圖
眾所周知在mysql資料庫應用中查詢請求是使用最多的,假設我們輸入下面的sql,通過客戶端請求mysql伺服器,會得到乙個包含user的結果集。但是,其中mysql的處理過程我們並不了解,那麼下面就讓我們一起看看在查詢請求前後mysql服務端發生了些什麼吧。
如上圖所示,整張圖由三部分組成,從上到下分別是客戶端(紫色)、mysql server層(綠色)、mysql儲存引擎層(黃色)。
上面介紹了mysql的元件結構,那麼這裡將其處理sql語句的流程簡單梳理一遍,之後再對每個元件逐一進行介紹。
聯結器:當客戶端登陸mysql的時候,對身份認證和許可權判斷。
查詢快取:執行查詢語句的時候,會先查詢快取(mysql 8.0 版本後移除)。
分析器:假設在沒有命中查詢快取的情況下,sql請求就會來到分析器。分析器負責明確sql要完成的功能,以及檢查sql的語法是否正確。
優化器:為sql提供優化執行的方案。
執行器:將語句分發到對應的儲存引擎執行,並返回資料。
客戶端需要通過聯結器訪問mysql server,聯結器主要負責身份認證和許可權鑑別的工作。也就是負責使用者登入資料庫的相關認證操作,例如:校驗賬戶密碼,許可權等。在使用者名稱密碼合法的前提下,會在許可權表中查詢使用者對應的許可權,並且將該許可權分配給使用者。在連線完成以後可以檢視連線狀態,通過命令列「show processlist」生成下圖的查詢結果。其中「command」列返回的內容中,「sleep」表示mysql相同中對應乙個空閒連線。而「query」表示正在查詢的連線。
含義
sleep
執行緒正在等待客戶端發資料
query
連線線程正在執行查詢
locked
執行緒正在等待表鎖的釋放
sorting result
執行緒正在對結果進行排序
sending data
向請求端返回資料
mysql將聯結器中的連線分為長連線和短連線。
MySQL語句執行過程
查詢語句 許可權校驗 快取查詢 分析器 優化器 執行器 許可權校驗 執行器 引擎。更新語句 分析器 許可權校驗 執行器 引擎 redolog prepare binlog redolog commit。mysql主要分為2部分 server層和儲存引擎層。查詢快取 執行查詢語句的時候,會先查詢快取 ...
MySQL語句執行過程
目錄平常我們看到的只是一條語句執行出來的結果,並不知道中間發生了什麼,今天就來 一下,mysql語句的執行過程。每次使用mysql會先連線到資料庫上面,聯結器負責跟客戶端進行連線 mysql u root p然後根據密碼,判斷我登陸進去會有什麼許可權,並分配許可權給我 通過show processl...
mysql查詢過程 MySQL查詢執行過程
mysql查詢執行路徑 1.客戶端傳送一條查詢給伺服器 2.伺服器先會檢查查詢快取,如果命中了快取,則立即返回儲存在快取中的結果。否則進入下一階段 3.伺服器端進行sql解析 預處理,再由優化器生成對應的執行計畫 4.mysql根據優化器生成的執行計畫,呼叫儲存引擎的api來執行查詢 5.將結果返回...