MySQL執行流程

2021-09-23 22:33:37 字數 735 閱讀 2932

最近也在面試,被問到了資料庫優化的一些問題

廢話不多說開始吧

了解mysql優化,那麼我們就先從mysql的執行流程開始說吧

客戶端訪問資料庫->查詢快取(有之則直接返回)->解析(語法解析,生成解析樹,處理器,生成新解析樹)->查詢優化器—>執行計畫->查詢執行引擎->返回結果

下面我們開始講一下每乙個步驟吧

1、客戶端訪問資料庫

2、查詢快取

客戶端訪問之後,首先進入快取查詢資料,有的話,就直接返回,沒有的話進行下一步

3、解析

進入到這一步之後,首先mysql會通過關鍵字進行解析,這個過程解析器主要通過sql的語句來判斷,如果沒錯,生成乙個解析樹。預處理,主要就是來判斷sql中的表、列等等是否存在,沒錯的話就會又生成乙個新的解析樹。

4、查詢優化器

這一步主要就是sql自身執行的。一條查詢會有很多的查詢方式,優化器會根據查詢條件找到最適合的查詢方式。

mysql主要是針對成本來進行查詢的,也就是說mysql會使用成本比較小的查詢方式。

5、執行計畫

這裡就開始執行了

6、查詢執行引擎

7、返回結果

返回執行結果並且放入到快取中

Mysql執行流程

檢視快取情況 show status like qcache 可檢視快取情況 查詢快取 不會快取的情況 1 當查詢語句中有一些不確定的資料時,則不會被快取。如包含函式now current date 等類似的函式,或者使用者自定義的函式,儲存函式,使用者變數等都不會被快取 2 當查詢的結果大於que...

Mysql執行流程

啟動1.1 客戶端通過命令啟動mysql 1.2 呼叫初始化模組,對系統環境變數 快取 儲存引擎進行初始化 連線2.1 通過網路互動,使用者傳送一條sql會傳遞到連線管理模組,然後 到連線進 執行緒模組 2.2 通過使用者模組校驗使用者是否有訪問資料庫許可權 2.3 檢驗通過後到執行緒連線池檢視是否...

mysql執行流程

mysql主要分為server層和儲存引擎層 server層 主要包括聯結器 查詢快取 分析器 優化器 執行器等,所有跨儲存引擎的功能都在這一層實現,比如儲存過程 觸發器 檢視,函式等,還有乙個通用的日誌模組 binglog日誌模組。儲存引擎 主要負責資料的儲存和讀取,採用可以替換的外掛程式式架構,...