MySQL的執行流程

2021-08-09 07:07:58 字數 1143 閱讀 7445

1:mysql流程圖

2:mysql的流程分析

1.連線

1.1客戶端發起一條query請求,監聽客戶端的『連線管理模組』接收請求

1.2將請求**到『連線進/執行緒模組』

1.3呼叫『使用者模組』來進行授權檢查

1.4通過檢查後,『連線進/執行緒模組』從『執行緒連線池』中取出空閒的被快取的連線線程和客戶端請求對接,如果失敗則建立乙個新的連線請求

2.處理

2.1先查詢快取,檢查query語句是否完全匹配,接著再檢查是否具有許可權,都成功則直接取資料返回

2.2上一步有失敗則轉交給『命令解析器』,經過詞法分析,語法分析後生成解析樹

2.3接下來是預處理階段,處理解析器無法解決的語義,檢查許可權等,生成新的解析樹

2.4再轉交給對應的模組處理

2.5如果是select查詢還會經由『查詢優化器』做大量的優化,生成執行計畫

2.6模組收到請求後,通過『訪問控制模組』檢查所連線的使用者是否有訪問目標表和目標欄位的許可權

2.7有則呼叫『表管理模組』,先是檢視table cache中是否存在,有則直接對應的表和獲取鎖,否則重新開啟表檔案

2.8根據表的meta資料,獲取表的儲存引擎型別等資訊,通過介面呼叫對應的儲存引擎處理

2.9上述過程中產生資料變化的時候,若開啟日誌功能,則會記錄到相應二進位制日誌檔案中

3.結果

3.1query請求完成後,將結果集返回給『連線進/執行緒模組』

3.2返回的也可以是相應的狀態標識,如成功或失敗等

3.3『連線進/執行緒模組』進行後續的清理工作,並繼續等待請求或斷開與客戶端的連線

4:小結

1:使用者模組校驗使用者,然後去執行緒連線池拿執行緒(連線足夠的話),找命令分發器,到查詢快取模組查sql語句,如果沒有,走命令解析器,然後訪問控制模組,設定使用者的許可權,設定好後走表管理模組,獲取鎖和快取,然後獲取各種資訊,儲存的方式:儲存引擎,從儲存引擎獲取資料,然後返回

MySQL執行流程

最近也在面試,被問到了資料庫優化的一些問題 廢話不多說開始吧 了解mysql優化,那麼我們就先從mysql的執行流程開始說吧 客戶端訪問資料庫 查詢快取 有之則直接返回 解析 語法解析,生成解析樹,處理器,生成新解析樹 查詢優化器 執行計畫 查詢執行引擎 返回結果 下面我們開始講一下每乙個步驟吧 1...

Mysql執行流程

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

Mysql執行流程

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