mysql檢視sql執行過程 SQL查詢執行過程

2021-10-17 18:20:23 字數 972 閱讀 5466

mysql查詢執行過程客戶端向伺服器傳送請求

伺服器查詢快取,快取中命中則結束,將結果返回客戶端(返回前會檢查使用者許可權),否則繼續下邊步驟

伺服器端進行sql解析、預處理,再由優化器生成對應的執行計畫

根據執行計畫呼叫儲存引擎的api執行查詢

將結果返回客戶端

一、查詢快取

如果一條sql語句以select開頭,mysql伺服器將會嘗試先在快取中查詢。每個cache都是以sql文字做為key的,所以如果sql語句中大小寫不同也無法命中。

設定:my.cnf(linuxe)/my.ini(windows)query_cache_type=0時,不啟用快取查詢

query_cache_type=1時,啟用快取查詢。如果在select後使用sql_no_cache,則本條sql不使用快取,對於查詢很分散的sql,不建議使用快取,例如根據使用者id查詢使用者資訊

query_cache_type=2時,只對特定語句使用快取。select後使用sql_cache則進行快取查詢,對於接近靜態資料的表,可以使用sql_cache提高效率

命令:show variables like '%query_cache%'查詢快取配置引數

命令:show status like '%qcache%'查詢快取情況

qcache_hits:命中次數

qcache_inserts:未命中後插入次數

二、mysql解析器和預處理

parser解析器

sql命令傳遞到解析器的時候會被解析器驗證和解析,主要功能為:解析器將sql語句分解成資料結構,並將這個結構傳遞到後續步驟,以後sql的傳遞和處理都是基於這個結構的

如果在分解成資料結構中遇到錯誤,那麼就說明這個sql語句是不合法的

預處理三、mysql查詢優化器

查詢優化器將語法樹轉換為執行計畫,並找出最好的執行計畫。

可以使用explain檢視查詢優化器的操作,編寫sql語句的方式決定查詢優化器如何使用索引。

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...

MySql之sql執行過程

mysql是乙個關係型資料庫管理系統,由瑞典mysql ab 公司開發,目前屬於 oracle 旗下產品。mysql 是最流行的關係型資料庫管理系統之一,在 web 應用方面,mysql是最好的 rdbms relational database management system,關聯式資料庫管理...

mysql檢視SQL語句執行效率

主要用explain命令去檢視 語法 explain select from where 例如 explain select from city 結果如下 idselect type table type possible keys keykey len refrows extra 1 city a...