1. 程式人生 > 其它 >MySQL中寫操作

MySQL中寫操作

具體到操作流程:

當執行某個寫操作的 SQL 時,引擎將這行資料更新到記憶體的同時把對應的操作記錄到 redo log 裡面,然後處於 prepare 狀態。並把完成資訊告知給執行器。

執行器生成對應操作的 binlog,並把 binlog 寫入磁盤裡。然後呼叫引擎的提交事務介面,變更 redo log 狀態為 commit。

===》》》《《《《====

重做日誌(redo log

位於儲存引擎層的redo log,它是用來記錄在"資料頁做了什麼修改"的物理日誌檔案。

WAL 技術

提到 redo log,WAL 技術必然是繞不過去的,全稱是 Write-Ahead Logging。也就是在同步磁碟前先寫日誌,然後系統再根據一定的策略將日誌裡的記錄同步到磁盤裡

二進位制日誌(binlog)

位於服務層的二進位制日誌檔案 binlog

扮演的角色是儲存邏輯日誌的,所謂的邏輯日誌就是指修改了什麼,都會記錄其中。

回滾日誌(undo log)

在進行資料修改時,同時記錄 undo log,即同時記錄相反操作的邏輯日誌。你可以理解為操作 update 的時候,寫一條對應相反的 update 記錄,操作 delete 的時候,寫一條對應的 insert 記錄。