一條select語句的旅遊過程

2021-09-26 14:15:19 字數 791 閱讀 1995

待分析sql語句: select * from t where id=10

(來自於一篇好文:

1、和聯結器打交道

第一步,連線到資料庫上,此時負責接待的就是聯結器。它的職責就是建立連線、獲取許可權、維持和管理連線。

mysql -h$ip -p$port -u$user -p

注意:連線建立好後,如果沒有後續動作,連線就會處於空閒狀態。當空閒狀態達到閾值,聯結器就會自動將他斷開。該閾值由引數wait_timeout控制,預設值是8小時。

2、去查詢快取模組喝杯茶

mysql拿到乙個查詢請求,會先去查詢快取模組看看,之前是不是執行過這個語句。

之前執行過的語句和結果可能會以key-value的形式,被快取在記憶體中。key是查詢的語句hash之後的值。

注意:大多數情況下不建議使用查詢快取。因為敝大於利。

而且,mysql8.0版本直接將查詢快取的整塊功能刪掉了。

3、進入正題:分析器

如果查詢快取沒有命中,則進入分析器中。

分析器先做「詞法分析」,識別每個字串。接著做「語法分析」,判斷輸入是否符合mysql語法。

4、優化器接手

優化器是在表裡面有多個索引的時候,決定使用哪個索引;或者在乙個語句有多表關聯的時候,決定各個表的連線順序。

5、執行器

mysql通過分析器知道了你要做什麼,通過優化器知道了該怎麼做,於是就進入了執行器階段。

一條Select語句導致瓶頸

情況 上週,公司一專案新上線,剛上線的第2天,在後台發現資料庫伺服器與iis伺服器的網路io出現瓶頸,1gb的網路頻寬,占用了70 100 也就是每秒傳輸資料700mb 1gb,資料庫使用記憶體高達21gb。iis伺服器cpu使用率時常爆至80 90 導致 頻頻出現連線超時。原因select fro...

一條SQL語句的執行過程

1.1連線層 提供連線協議 tcp ip,socket 提供驗證 使用者 密碼 ip socket 提供專用連線線程 接收使用者sql,返回結果 通過以下語句可以檢視鏈結執行緒的基本情況 mysql show processlist 1.2sql層 重點 接收上層傳送的sql語句 語法驗證模組 驗證...

一條select語句引起的瓶頸問題思考

情境還原 公司一專案新上線,剛上線的第2天,在後台發現程式設計客棧資料庫伺服器與iis伺服器的網路io出現瓶頸,1gb的網路頻寬,占用了70 100 也就是每秒傳輸資料700mb 1gb,資料庫使用記憶體高達21gb。iis伺服器cpu使用率時常爆至80 90 導致 頻頻出現連線元程式設計客棧時。原...