自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺聊 Bin Log、Redo Log、Undo log

數(shù)據(jù)庫 MySQL
崩潰恢復(fù)是指在數(shù)據(jù)庫系統(tǒng)因各種原因而發(fā)生崩潰或非正常關(guān)閉后,通過一系列機(jī)制和步驟來將數(shù)據(jù)庫恢復(fù)到一個(gè)一致性和可用的狀態(tài)。

在 MySQL 數(shù)據(jù)庫中,binlog、redo log 和 undo log 皆屬于日志類型文件,然而,它們的功能與實(shí)現(xiàn)方式存在著微妙的差異。

binlog 主要用于數(shù)據(jù)庫的數(shù)據(jù)備份、崩潰恢復(fù)以及數(shù)據(jù)復(fù)制等操作;而 redo log 和 undo log 則主要用于事務(wù)管理,分別記錄了數(shù)據(jù)修改操作和回滾操作的細(xì)節(jié)。redo log 用于數(shù)據(jù)恢復(fù),而 undo log 則用于回滾事務(wù)。

崩潰恢復(fù)是指在數(shù)據(jù)庫系統(tǒng)因各種原因而發(fā)生崩潰或非正常關(guān)閉后,通過一系列機(jī)制和步驟來將數(shù)據(jù)庫恢復(fù)到一個(gè)一致性和可用的狀態(tài)。這是數(shù)據(jù)庫管理系統(tǒng)的重要功能之一,它確保在異常情況下數(shù)據(jù)庫能夠自動(dòng)恢復(fù),從而避免數(shù)據(jù)丟失或數(shù)據(jù)庫狀態(tài)不一致的問題。

在 MySQL 中,redo log 和 undo log 僅適用于 InnoDB 存儲(chǔ)引擎,因?yàn)槠渲С质聞?wù)特性,而不適用于其他存儲(chǔ)引擎如 MyISAM 等。而 binlog 則適用于所有存儲(chǔ)引擎。

binlog 是 MySQL 用于記錄數(shù)據(jù)庫中所有 DDL 語句和 DML 語句的二進(jìn)制日志。它記錄了對(duì)數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù)的所有修改操作,例如 INSERT、UPDATE 和 DELETE 等。binlog 主要用于數(shù)據(jù)庫的數(shù)據(jù)備份、災(zāi)難恢復(fù)和數(shù)據(jù)復(fù)制等操作。binlog 的格式包括基于語句的格式和基于行的格式。

Redo Log 是 MySQL 用于實(shí)現(xiàn)崩潰恢復(fù)和數(shù)據(jù)持久性的機(jī)制。在事務(wù)進(jìn)行過程中,MySQL 會(huì)將事務(wù)所做的修改記錄到 Redo Log 中。當(dāng)系統(tǒng)發(fā)生崩潰或異常情況時(shí),MySQL 利用 Redo Log 中的記錄信息進(jìn)行恢復(fù)操作,將事務(wù)所做的修改持久化到磁盤中。

Undo Log 用于在事務(wù)回滾或系統(tǒng)崩潰時(shí)撤銷(回滾)事務(wù)所做的修改。當(dāng)一個(gè)事務(wù)執(zhí)行時(shí),MySQL 會(huì)將事務(wù)修改前的數(shù)據(jù)記錄到 Undo Log 中。如果事務(wù)需要回滾,則會(huì)從 Undo Log 中找到相應(yīng)的記錄來撤銷事務(wù)所做的修改。此外,Undo Log 還支持 MVCC(多版本并發(fā)控制)機(jī)制,用于在并發(fā)事務(wù)執(zhí)行時(shí)提供一定的隔離性。

很多人不知道該怎么記憶,可以參考網(wǎng)友的建議,可以這么記憶:

  1. undo 就是回退的意思,就跟在文本編輯器里面有一個(gè) undo 按鈕一樣,你編輯的東西,按一下這個(gè) undo 按鈕就回退到上一個(gè)版本了。
  2. redo 是“re”+"do","re"就是重來一次的意思,“do”就是做的意思。所以連在一起,就是重新再做一遍,也就是重新再執(zhí)行一次 sql。那么什么時(shí)候需要重新再執(zhí)行一次 sql 呢?執(zhí)行的數(shù)據(jù)丟了嘛,自然就需要重新執(zhí)行一次。
  3. bin 就是“binary”的縮寫,"binary"就是二進(jìn)制的意思,可以引申為“原始”的意思,所以 bin log 就是最全最原始的東西,里面包含了一切,所以可以用來做備份,有了它,就有了一切。

undolog 和 redolog 在功能和記錄內(nèi)容上有著明顯的區(qū)別:

  • 目的:Redo log 的目的是確保事務(wù)的持久性,主要用于崩潰恢復(fù)。而 Undo log 的目的是確保事務(wù)的原子性和一致性,主要用于事務(wù)回滾。
  • 記錄內(nèi)容:Redo Log 記錄了事務(wù)的所有數(shù)據(jù)更改,不僅記錄了數(shù)據(jù)更改的最終結(jié)果,還記錄了實(shí)現(xiàn)這些更改的具體操作。而 Undo log 記錄的是事務(wù)執(zhí)行前的內(nèi)容,即事務(wù)所做的修改前的狀態(tài)。
責(zé)任編輯:武曉燕 來源: 碼上遇見你
相關(guān)推薦

2021-01-26 13:47:08

MySQL存儲(chǔ)數(shù)據(jù)

2021-05-28 11:18:50

MySQLbin logredo log

2020-08-20 12:10:42

MySQL日志數(shù)據(jù)庫

2024-05-28 00:10:00

JavaMySQL數(shù)據(jù)庫

2025-01-15 13:19:09

MySQL日志事務(wù)

2024-05-30 08:03:17

2023-11-23 13:17:39

MySQL?數(shù)據(jù)庫

2021-07-28 08:32:03

MySQLRedo存儲(chǔ)

2024-12-16 00:00:05

MySQL二進(jìn)制數(shù)據(jù)

2021-10-04 09:23:30

Redo日志內(nèi)存

2025-01-20 08:20:00

redo logMySQL數(shù)據(jù)庫

2021-12-26 18:24:51

MySQL InnoDB引擎

2010-01-06 09:30:51

Oracle Redo

2011-08-30 10:30:50

OracleUNDO LOG日志回

2010-05-19 11:01:25

MySQL BIN-L

2021-02-09 10:07:23

面試MySQL存儲(chǔ)

2024-03-14 14:18:58

MySQL業(yè)務(wù)設(shè)計(jì)事務(wù)

2019-05-06 15:27:48

Oracle數(shù)據(jù)庫數(shù)據(jù)

2022-10-12 08:01:08

MySQL日志數(shù)據(jù)庫

2022-08-26 10:11:26

MySQL數(shù)據(jù)庫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)