MySQL--SQL執行流程

查詢SQL執行流程


流程圖

在這裏插入圖片描述

流程說明

  1. 客戶端通過同步半雙工的長鏈發送查詢sql語句到Connectors。鏈接器進行庫權限校驗。
  2. 通過之後請求緩存,命中緩存則直接返回,未命中則轉給解析器。
  3. 解析器經過詞法和語法解析生成解析樹。
  4. 經預處理器進行權限校驗和語義解析重新生成解析樹。
  5. 優化器將解析的語法樹轉換成最優的執行計劃。
  6. 通過執行器調用存儲引擎的API,API會調用存儲引擎查詢數據。

更新SQL執行流程


  • update操作包括insert、update、delete等。
  • update操作必須先拿到數據,才能操作,更新之前先要做查詢

流程圖

在這裏插入圖片描述

流程說明

  1. 先從內存或者磁盤拿到這條數據。
  2. 更新數據,然後調用存儲引擎的API接口,寫入這一行數據到內存,同時記錄redo log。這時redo log進入prepare狀態,然後告訴執行器,執行完成了,可以隨時提交。
  3. 執行器收到通知後記錄binlog
  4. 然後調用存儲引擎接口,設置redo log爲commit狀態。更新完成。
說明
  • 先記錄到內存(buffer pool),再寫日誌文件。
  • 記錄redo log分爲兩個階段(prepare和commit)。
  • 存儲引擎和server分別記錄不同的日誌。
  • 先記錄redo,再記錄binlog。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章