Mysql
InnoDB:未送出的事務會產生重做日誌嗎?
MySQL在送出事務之前,會先寫REDO日誌,然後再送出事務,即預寫日誌。
start transaction; update users set uuid = UUID() from user where id = 1 update users set uuid = UUID() from user where id = 2 update users set uuid = UUID() from user where id = 3 ... ... update users set uuid = UUID() from user where id = 1,000,000 // not yet commit
如果一個事務要更新 100 萬條記錄,這需要 100 秒。在執行期間,這會
uncommitted transaction
產生redo log嗎?
innodb 在事務期間生成重做日誌,即使事務尚未送出,也可能同步到磁碟。
log_buffer 的大小是有限的。當它溢出時,內容將被寫入日誌文件。無論 innodb_flatc 的值如何,事務最終都會被刷新到磁碟。