数据库的binlog、redolog以及undolog
1. binlog
1.1 binlog:記錄了數(shù)據(jù)庫表結(jié)構(gòu)和表數(shù)據(jù)的變更(update/delete/insert/create/truncate),不記錄select操作,存儲的是邏輯操作,如“為id=3這一行的count字段加1”。
1.2?binlog的作用:①用戶檢索的數(shù)據(jù)是從搜索引擎得到的,但是我們修改數(shù)據(jù)是直接操作的數(shù)據(jù)庫,所以數(shù)據(jù)庫的變更要同步到搜索引擎。通過監(jiān)聽binlog的變更,可以對搜索引擎進(jìn)行更新。②對于一主多從的架構(gòu),從機(jī)的數(shù)據(jù)復(fù)制通過binlog實現(xiàn);③數(shù)據(jù)庫的數(shù)據(jù)被清空,可以通過binlog對數(shù)據(jù)進(jìn)行恢復(fù)。
2. redolog
2.1 redolog:MySQL的基本存儲結(jié)構(gòu)是頁,所以mysql在修改數(shù)據(jù)時,先把數(shù)據(jù)所在的頁加載到內(nèi)存并修改,是物理操作,然后會寫入redo log(保存的是在某個數(shù)據(jù)頁做了什么修改)。
2.2 redolog的作用:如果內(nèi)存把數(shù)據(jù)改了,但是還沒異步寫入磁盤(如果每次都立馬寫入磁盤,那么速度很慢),此時數(shù)據(jù)庫掛了,那么這次數(shù)據(jù)就丟失了。所以為了避免這種情況,每次內(nèi)存操作數(shù)據(jù)后,都在redolog中記錄(順序IO,寫入速度快),以便之后恢復(fù)(redolog體積小,恢復(fù)速度快)。
2.3 在事務(wù)提交時,是兩階段提交(2PC)。如果SQL語句都執(zhí)行成功,那么完成prepare過程;然后寫入binlog,接著寫入redolog,完成提交。
3. undolog
3.1 undolog:①可以用于MVCC,②可以使用undolog回滾。
3.2 redolog是針對數(shù)據(jù)頁的修改,且是前滾操作,物理操作;而undolog是將行記錄回滾,針對的是數(shù)據(jù)版本,邏輯操作。
4. 寫入磁盤策略:通過sync_binlog控制,0表示不強(qiáng)制刷盤,系統(tǒng)自行判斷;1表示每次提交事務(wù)都寫入磁盤;n表示提交n個事務(wù)再寫入磁盤。
總結(jié)
以上是生活随笔為你收集整理的数据库的binlog、redolog以及undolog的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统相关内容
- 下一篇: 浅谈AQS(AbstractQueued