Mysql之一次完成的sql執行過程

*一炁化三清*發表於2024-07-21

Mysql一次完成的sql執行過程是什麼

1、客戶端請求
客戶端透過MySQL協議傳送SQL查詢或事務到伺服器。

2、連線處理
MySQL伺服器為每個客戶端連線建立一個執行緒,該執行緒處理來自客戶端的所有請求。

3、SQL解析
伺服器首先解析SQL語句,檢查語法正確性。

4、查詢最佳化
解析器生成一個或多個執行計劃,最佳化器選擇一個最優的執行計劃。

5、許可權檢查
伺服器檢查連線的使用者是否有執行該語句的許可權。

6、快取查詢
對於SELECT語句,如果開啟了查詢快取,伺服器會檢查查詢結果是否已快取。

7、鎖定機制
根據事務的隔離級別,伺服器對涉及的資料進行適當的鎖定。

8、緩衝池操作
對於InnoDB儲存引擎,資料首先操作在記憶體中的緩衝池。緩衝池是一塊記憶體區域,用於快取資料和索引,減少磁碟I/O。
如果資料尚未在緩衝池中,InnoDB將從磁碟讀取必要的頁面到緩衝池,這個過程稱為“頁面置換”。

9、日誌記錄
在資料實際寫入或變更前,伺服器會將事務記錄到日誌中,主要是重做日誌(Redo Log)和可能的撤銷日誌(Undo Log):

  • 重做日誌:確保事務的永續性,用於崩潰恢復。
  • 撤銷日誌:支援事務的回滾和MVCC(多版本併發控制)。

10、資料變更
伺服器執行實際的資料變更操作,包括插入、更新或刪除資料。
資料在緩衝池中更新後,MySQL會根據配置的重新整理策略(如innodb_flush_log_at_trx_commit的設定)決定何時將更改重新整理到磁碟。
重新整理操作涉及將緩衝池中的資料非同步或同步寫入磁碟,這取決於設定的重新整理策略。

11、重新整理到磁碟
根據InnoDB的重新整理策略,緩衝池中的資料最終會被重新整理到磁碟(寫入到磁碟上的相應檔案中)。這可能涉及到作業系統的I/O排程和磁碟的物理寫入操作。

  • innodb_flush_log_at_trx_commit 控制何時將重做日誌重新整理到磁碟,影響資料的永續性。
  • innodb_buffer_pool_dump_at_shutdown 和 innodb_buffer_pool_load_at_startup 控制在MySQL啟動和關閉時是否重新整理和載入緩衝池。

12、事務提交
事務完成,伺服器提交事務,確保所有變更都是原子的。
當事務準備提交時,必須確保所有的日誌記錄已經寫入到磁碟上的重做日誌檔案中。這是透過日誌緩衝(Log Buffer)重新整理到日誌檔案完成的。

13、反饋客戶端
伺服器將操作結果傳送回客戶端。

14、清理和釋放
伺服器清理資源,如釋放鎖,關閉執行緒等。

15、快取更新
如果操作影響了查詢快取或InnoDB緩衝池,這些快取將被更新以反映最新的資料狀態。

Mysql先提交事務還是提交日誌?

在MySQL中,特別是在使用InnoDB儲存引擎時,事務的提交過程與日誌的提交緊密相關。具體來說:

日誌先行:
在事務提交之前,必須先將事務的所有更改記錄到日誌中,這是為了保證事務的永續性和可靠性。InnoDB的重做日誌(Redo Log)是這個過程的關鍵部分。

重做日誌寫入:
當事務進行修改操作(如INSERT、UPDATE、DELETE)時,相關的日誌首先被寫入到重做日誌中。重做日誌是InnoDB儲存引擎特有的,用於記錄資料頁的物理修改。

事務提交請求:
當應用程式發出事務提交請求時,MySQL伺服器首先確保所有的日誌記錄都已經安全地寫入到重做日誌中。

日誌提交:
一旦重做日誌寫入完成,日誌提交(Log Commit)就發生了。這確保了即使在資料庫崩潰的情況下,事務的所有更改都可以被恢復。

事務提交:
根據innodb_log_buffer_size和innodb_flush_log_at_trx_commit的配置,重做日誌緩衝區會在一定條件下重新整理到磁碟上的日誌檔案。這一步驟是確保事務日誌持久化的關鍵。
日誌提交完成後,MySQL才正式提交事務(Transaction Commit)。此時,更改被永久地應用到資料庫中,並且釋放了事務過程中持有的鎖資源。

資料重新整理到磁碟:
事務提交之後,根據InnoDB的緩衝池重新整理策略,資料最終會被重新整理到磁碟上。這個步驟可以是同步的,也可以是非同步的,取決於innodb_flush_log_at_trx_commit配置選項的設定。

二階段提交:
InnoDB使用二階段提交(2PC)協議來確保事務的永續性和完整性。在二階段提交中,第一階段是準備階段,此時日誌被寫入並提交;第二階段是完成階段,此時事務被提交。

總結來說,MySQL中的事務提交過程是先確保日誌提交,然後才是事務提交。這種日誌先行的策略是資料庫保證ACID屬性(原子性、一致性、隔離性、永續性)的關鍵。

相關文章