做商城網(wǎng)站用什么框架常用的seo查詢工具
redo log(重做日志)
為什么需要redo log?
在mysql提交一個事務(wù)后,這個事務(wù)所作的數(shù)據(jù)修改并不會直接保存到磁盤文件中,而是先保存在buffer pool緩沖區(qū)中,在需要讀取數(shù)據(jù)時,先從緩沖區(qū)中找,沒找到再去磁盤找,加之每次提交事務(wù)都將數(shù)據(jù)寫入磁盤的效率低下,所以引入了buffer pool緩沖區(qū)
也正是因為一個事務(wù)的提交并不會立即由磁盤進行持久化,此時mysql故障就會有緩沖區(qū)中數(shù)據(jù)丟失的風(fēng)險
因此,redo log記錄了一個事務(wù)對數(shù)據(jù)頁的修改,這個記錄與undolog不同,是物理層面的,比如對 XXX 表空間中的 YYY 數(shù)據(jù)頁 ZZZ 偏移量的地方做了AAA 更新
提交一個事務(wù)后,先將redo log持久化磁盤,就可以保證這個事務(wù)修改的數(shù)據(jù)被持久化了
redo log(重做日志):是 Innodb 存儲引擎層生成的日志,實現(xiàn)了事務(wù)中的持久性,主要用于掉電等故障恢復(fù);
作用:
redo log
主要用于保證事務(wù)的持久性和數(shù)據(jù)恢復(fù)。在事務(wù)提交時,redo log
記錄了所有修改操作,這些日志可以在數(shù)據(jù)庫崩潰后用來重做(恢復(fù))事務(wù),以保證已提交事務(wù)的持久性。
特性:
- 物理日志:記錄的是頁級別的物理修改操作。
- 循環(huán)寫:
redo log
的大小固定,采用循環(huán)寫的方式。 - 持久性保證:事務(wù)在提交時會先寫入
redo log
并刷盤,確保即使數(shù)據(jù)庫崩潰也能通過redo log
恢復(fù)已提交的事務(wù)。
記錄內(nèi)容:
- 頁號、偏移量、修改前后的數(shù)據(jù)等。
redo log 和 undo log 區(qū)別在哪?
這兩種日志是屬于 InnoDB 存儲引擎的日志,它們的區(qū)別在于:
- redo log 記錄了此次事務(wù)「完成后」的數(shù)據(jù)狀態(tài),記錄的是更新之后的值;
- undo log 記錄了此次事務(wù)「開始前」的數(shù)據(jù)狀態(tài),記錄的是更新之前的值;
事務(wù)提交之前發(fā)生了崩潰,重啟后會通過 undo log 回滾事務(wù),事務(wù)提交之后發(fā)生了崩潰,重啟后會通過 redo log 恢復(fù)事務(wù),如下圖:
推薦學(xué)習(xí) https://xxetb.xetslk.com/s/p5Ibb