mysql的怎麼執行 MySQL中的語法怎麼執行的

2021-10-17 13:50:12 字數 617 閱讀 1898

對於測試行業的小夥伴來說,看到「select * from table where ...」應該再熟悉不過了,那麼是否明白這個語句到底是怎麼執行的呢?

首先要明白這個語句是由客戶端向伺服器傳送的,那麼伺服器中是由負載均衡(nginx)接收後分配給到了tomcat,其次tomcat才會從mysql中撈取資料

下面說下mysql中到底是怎麼的執行規則,上圖:

通過這個圖大家應該可以看出基本的步驟了,下面詳細說下

1、客戶端發起乙個查詢請求後會經過聯結器和mysql進行連線

2、查詢快取,如果在快取中查詢到了資料那麼就會直接返回,如果沒有查詢到,那麼就會到解析器,這裡說明下快取中的資料,只要表一更新,那麼快取中的資料就會清空

3、解析器會對這條sql語句進行解析,判斷是否有語句錯誤,如果錯誤則返回錯誤,如果正就到優化器

4、經過了解析器之後,mysql就知道你想要怎麼做了,那麼就會到優化器中進行優化,具體怎麼執行才會更加高效,比如表中有哪些索引,應該怎麼用這些索引,多表連線查詢的表順序等

5、通過優化器之後,就會到執行器,執行器就會檢查許可權,如果許可權不通過則會返回對應錯誤,其次會想搜尋引擎索要資料,返回的資料如果設定的快取那麼就會放到快取中

以上就是整個的搜尋過程了,歡迎各位同行指正

怎麼去看懂mysql的執行計畫

mysql的檢視執行計畫的語句很簡單,explain 你要執行的sql語句就ok了。舉乙個例子 explain select from employees where employees.gender m 返回的結果如下 這些結果都代表什麼?id是一組數字,表示查詢中執行select子句或操作表的順...

怎麼去看懂mysql的執行計畫

託管 持續整合 敏捷管理 免費體驗,這僅僅只是開始 mysql的檢視執行計畫的語句很簡單,explain 你要執行的sql語句就ok了。舉乙個例子 explain select from employees where employees.gender m 返回的結果如下 這些結果都代表什麼?id是...

怎麼檢視mysql執行過的sql。

有些時候當程式做了更新,資料庫負載突然上來,或者併發翻了幾倍。這個時候如果用show full processlist 根本看不到完全的sql。怎麼才能看是哪些sql導致的呢,在網上查了資料,有一下幾種方法。1.記錄慢日誌 long query time 1 log slow queries tmp...