1.首先就是使用者傳送一條sql通過客戶端接收之後,交由解析器解析sql建立對應的解析樹之後
2.然後優化獲取對應的資料表的資訊-結構
3.獲取表中對應的資料表,首先就會去快取中讀取索引的如果沒有就會通過io讀取在磁碟中記錄索引的資訊並返回
4.選擇合適的索引:因為乙個表會有很多的索引,mysql會對於每乙個索引進行相應的演算法推敲然後再做相應的刪選留下最為合適的索引,所以如果說索引的數量多的話會給查詢優化器帶來一定的負擔。
5.因為在當前的索引為二級索引所以這個時候就會根據二級索引的btree獲取到對應的id
6.讀取到所對應的id之後再通過回表查詢
7.根據主鍵索引獲取到對應的資料的頁在磁碟中的位置
8.在獲取資料之前會判斷索引快取的資料是否滿足查詢,然後再判斷資料庫緩衝池以及讀緩衝區中是否有緩衝,如果有就返回。沒有就會去執行對應的執行計畫,從磁碟中獲取資料資訊
MySQL優化器與執行器
經過了分析器,mysql 就知道你要做什麼了。在開始執行之前,還要先經過優化器的處理。優化器是在表裡面有多個索引的時候,決定使用哪個索引 或者在乙個語句有多表關聯 join 的時候,決定各個表的連線 順序。比如你執行下面這樣的語句,這個語句 是執行兩個表的 join mysql select fro...
mysql優化流程
1 檢視是否週期性故障或波動 一般由訪問高峰或快取崩潰引起 解決方法 加緩衝並更改快取失效策略,使失效時間分散或夜間定時失效 2 如果仍有不規則出現的延遲或卡等現象 show processlist或開啟慢查詢,獲取有問題的sql 檢視mysql伺服器配置資訊 show variables like...
MySQL執行流程
最近也在面試,被問到了資料庫優化的一些問題 廢話不多說開始吧 了解mysql優化,那麼我們就先從mysql的執行流程開始說吧 客戶端訪問資料庫 查詢快取 有之則直接返回 解析 語法解析,生成解析樹,處理器,生成新解析樹 查詢優化器 執行計畫 查詢執行引擎 返回結果 下面我們開始講一下每乙個步驟吧 1...