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