欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql持久化原理

錢諍諍2年前105瀏覽0評(píng)論

mysql持久化原理?

持久化定義

持久化是指事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫的改變就應(yīng)該是永久性的,接下來的其他操作或故障不應(yīng)該對(duì)本次事務(wù)的修改有任何影響。

我們知道InnoDB使用 Buffer Pool 來提高讀寫的性能。但是 Buffer Pool 是在內(nèi)存的,是易失性的,如果一個(gè)事務(wù)提交了事務(wù)后,MySQL突然宕機(jī),且此時(shí)Buffer Pool中修改的數(shù)據(jù)還沒有刷新到磁盤中的話,就會(huì)導(dǎo)致數(shù)據(jù)的丟失,事務(wù)的持久性就無法保證。

為了解決這個(gè)問題,InnoDB引入了 redo log來實(shí)現(xiàn)數(shù)據(jù)修改的持久化。當(dāng)數(shù)據(jù)修改時(shí),InnoDB除了修改Buffer Pool中的數(shù)據(jù),還會(huì)在redo log 記錄這次操作,并保證redo log早于對(duì)應(yīng)的頁面落盤(一般在事務(wù)提交的時(shí)候),也就是常說的WAL。若MySQL突然宕機(jī)了且還沒有把數(shù)據(jù)刷回磁盤,重啟后,MySQL會(huì)通過已經(jīng)寫入磁盤的redo log來恢復(fù)沒有被刷新到磁盤的數(shù)據(jù)頁。

實(shí)現(xiàn)原理:redo log

為了提高性能,和數(shù)據(jù)頁類似,redo log 也包括兩部分:一是內(nèi)存中的日志緩沖(redo log buffer),該部分日志是易失性的;二是磁盤上的重做日志文件(redo log file),該部分日志是持久的。redo log是物理日志,記錄的是數(shù)據(jù)庫中物理頁的情況 。

當(dāng)數(shù)據(jù)發(fā)生修改時(shí),InnoDB不僅會(huì)修改Buffer Pool中的數(shù)據(jù),也會(huì)在redo log buffer記錄這次操作;當(dāng)事務(wù)提交時(shí),會(huì)對(duì)redo log buffer進(jìn)行刷盤,記錄到redo log file中。如果MySQL宕機(jī),重啟時(shí)可以讀取redo log file中的數(shù)據(jù),對(duì)數(shù)據(jù)庫進(jìn)行恢復(fù)。這樣就不需要每次提交事務(wù)都實(shí)時(shí)進(jìn)行刷臟了。

大概就是這些,還有就是出現(xiàn)意外關(guān)機(jī),需要數(shù)據(jù)恢復(fù)的,持久化這塊也可以做到的。