mysql使用者SQL執行流程

2021-08-05 19:42:38 字數 778 閱讀 5182

對於dba來說,知道資料庫內部對使用者程序的處理流程是非常重要的,mysql跟oracle都屬於關係型資料庫,在處理使用者的程序方面有著相似之處:

這裡我們只討論mysql:

第一、連線階段:

1、使用者發起sql程序,監聽客戶端的『連線管理模組』在3306埠接收客戶的sql請求;

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

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

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

第二、執行階段:

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

2、上一步有失敗則轉交給『命令解析器』,經過詞法分析,物件許可權檢查、語法分析後生成解析樹;

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

4、再轉交給對應的模組處理;

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

6、檢查資料是否在記憶體裡,如果是直接從記憶體裡讀取、修改,如果否,獲取表的儲存引擎型別等資訊,通過介面呼叫對應的儲存引擎處理;

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

三、返回階段:

1、query請求完成後,將結果集返回給『連線進/執行緒模組』;返回的也可以是相應的狀態標識,如成功或失敗等;

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

mysql學習(二) sql執行流程

上篇文章對mysql的基本架構和儲存引擎有了簡單的認識,今天我們需要對sql的執行流程有個簡單的認識,通過這篇文章,我們可以詳細的了解並知道一條sql在mysql中是如何執行下來的。大體來說,mysql主要分為server層和儲存資料層 儲存引擎層 server層包括聯結器 查詢快取 分析器 優化器...

MySQL架構與SQL執行流程

mysql架構設計 下面是一張mysql的架構圖 上方各個元件的含義如下 connectors 指的是不同語言中與sql的互動 management serveices utilities 系統管理和控制工具 connection pool 連線池 管理緩衝使用者連線,執行緒處理等需要快取的需求。負...

SQL執行流程

mysql的查詢流程 1 查詢快取 server如果在查詢快取中發現了這條sql語句,就會直接將結果返回給客戶端 如果沒有,就進入到解析器階段。需要說明的是,因為查詢快取往往效率不高,所以在mysql8.0以後就拋棄了這個功能 兩個sql需要完全一樣,包括空格 注釋 大小寫都必須一樣 2 解析器 在...