mysql語句過程及執行流程

2021-08-10 10:57:06 字數 1050 閱讀 3441

1.使用者在發出sql命令之後,mysql的執行緒管理器會建立或者重用乙個執行緒,建立client到mysql伺服器的連線。mysql會根據使用者名稱和使用者ip(或主機名),在mysql.user表中檢視是否有記錄,是否允許連線。

2.使用者認證完成之後,會進入commanderdispatcher模組(命令分發),同時會呼叫logging module記錄常規日誌(所以常規日誌中記錄的是mysql執行的所有命令,包括一些使用者輸入錯誤或者執行失敗的命令,謹慎開啟,在業務忙時,會增長迅速,可用於出現故障時進行故障復現時使用。)

3.在解析命令之前,會呼叫querycache module,根據sql 的hash值,檢查查詢快取中是否有該sql的結果集快取。

根據sql的hash值查詢(跟oracle類似,都是用hash值)。mysql的結果集快取並不只能,在表中資料被修改時,無法判斷與該錶有關的結果集快取是否失效,所以mysql對於結果集快取的處理比較粗暴,只要表中的資料被修改了,則該錶在結果集中的快取全部失效。

4.mysql將sql解析之後,根據sql型別不同,呼叫不同的模組進行處理,如查詢優化,修改,複製,統計,表的維護等模組。

5.解析並處理sql之後,驗證使用者許可權,是否有足夠的許可權執行該操作。

6.最後根據提供的介面,呼叫不同表對應的不同儲存引擎的具體實現。

從除錯跟蹤一條sql語句的執行過程可以發現,在mysql中執行一條sql語句,mysql的處理主要在於兩個函式,其中乙個是mysql_parse,這個函式模組是把執行一條sql語句分成了兩部分,一部分為分析sql語句,parse_sql函式的主要功能,第二個部分是執行sql語句,mysql_execute_command函式完成的功能,兩者結合起來,一起完成一條sql語句從分析到真正執行的全過程,也就是一般教科書中提到的「詞法解析-》語法解析-》邏輯計畫-》查詢優化-》物理執行計畫「,parse_sql主要完成兩面兩步,詞法和語法部分,後者完成後面的三步;另乙個函式是mysql_select,完成了計畫的生成到執行步驟,也是mysql執行一條sql語句的關鍵技術;對上述講述,語法部分也可能在mysql_select函式中的prepare中,因為暫時未閱讀**,但一般理解,應該是在parse_sql階段。

MySQL語句執行過程

查詢語句 許可權校驗 快取查詢 分析器 優化器 執行器 許可權校驗 執行器 引擎。更新語句 分析器 許可權校驗 執行器 引擎 redolog prepare binlog redolog commit。mysql主要分為2部分 server層和儲存引擎層。查詢快取 執行查詢語句的時候,會先查詢快取 ...

MySQL語句執行過程

目錄平常我們看到的只是一條語句執行出來的結果,並不知道中間發生了什麼,今天就來 一下,mysql語句的執行過程。每次使用mysql會先連線到資料庫上面,聯結器負責跟客戶端進行連線 mysql u root p然後根據密碼,判斷我登陸進去會有什麼許可權,並分配許可權給我 通過show processl...

Mysql查詢語句執行流程

第一步 聯結器 首先我們要連線上這個資料庫,聯結器負責建立連線,判斷認證是否通過等。第二部 查詢快取 mysql拿到請求後首先判斷請求的查詢語句是否有快取,是否命中快取,但是不推薦使用mysql的快取,官方也不推薦,因為只要有一條資料更新表的快取就會被刪除,降低效率 第三步 第四步 優化器 優化sq...