综合AV图片国产区_国产成人精品2021国产欧美日韩_成人三级片在线观看_日韩黄色免费毛片_國產成人綜合視頻_合家欢下册公交车_女明星换脸自慰网站_国产夜趣福利第一视频_中文精品北条麻妃中文_日韩精品无码专区国产A∨

信息薈萃
聯(lián)系方式

    固話:021-59786133

    電話:18117117761(微信同號(hào))

    郵箱:yuchengzhineng@qq.com

    網(wǎng)站:http://twgds.cn

精品展示
你的位置:首頁(yè) > 信息薈萃

突然停電了,我的數(shù)據(jù)還沒(méi)保存到數(shù)據(jù)庫(kù)……

2021/1/5 8:53:47??????點(diǎn)擊:

最近看到全國(guó)各地都在“拉閘限電”,嚇的我趕緊登上后臺(tái)服務(wù)器,看了看MySQL數(shù)據(jù)庫(kù)是否有問(wèn)題,還好一切如常,也沒(méi)聽(tīng)說(shuō)北京有停電通知,好歹松了一口氣。

微信圖片_20210105084913.jpg

忽然想到一個(gè)問(wèn)題,萬(wàn)一數(shù)據(jù)庫(kù)正在執(zhí)行寫(xiě)入操作,突然斷電了,會(huì)是怎么樣的呢?


從MySQL V5.5開(kāi)始,InnoDB成為了默認(rèn)的存儲(chǔ)引擎。InnoDB中將頁(yè)作為磁盤(pán)管理的最小單位,數(shù)據(jù)校驗(yàn)和數(shù)據(jù)寫(xiě)入到磁盤(pán)都是以頁(yè)為單位操作的,通常情況下默認(rèn)每個(gè)頁(yè)的大小為16KB。但由于文件系統(tǒng)對(duì)數(shù)據(jù)頁(yè)(16KB)的寫(xiě)入多數(shù)情況下都不是原子操作,意味著當(dāng)服務(wù)器斷電時(shí)可能只寫(xiě)了部分?jǐn)?shù)據(jù)。


一個(gè)數(shù)據(jù)頁(yè)的大小是16K,假設(shè)在把內(nèi)存中的臟頁(yè)(頁(yè)中有記錄被更新過(guò))寫(xiě)到磁盤(pán)時(shí),寫(xiě)了2K突然掉電,則前2K數(shù)據(jù)是新的,后14K是舊的,那么磁盤(pán)中的這個(gè)數(shù)據(jù)頁(yè)就是不完整的,是一個(gè)壞掉的數(shù)據(jù)頁(yè)。


可能有經(jīng)驗(yàn)的DBA會(huì)想到,如果發(fā)生寫(xiě)失效,可以利用redo log進(jìn)行恢復(fù)。


這也許能夠解決部分問(wèn)題,但redo log中記錄的是對(duì)頁(yè)的物理操作,redo log只能加上舊的、校檢完整的數(shù)據(jù)頁(yè)恢復(fù)一個(gè)臟塊,不能修復(fù)壞掉的數(shù)據(jù)頁(yè)。如果數(shù)據(jù)頁(yè)本身已經(jīng)發(fā)生了損壞,再對(duì)其進(jìn)行重做是沒(méi)有意義的。

那么就沒(méi)有其它辦法了嗎?當(dāng)然不是!這個(gè)時(shí)候double write就閃亮登場(chǎng)了。


開(kāi)啟了Double write(兩次寫(xiě)/雙寫(xiě))后,在將內(nèi)存中的臟頁(yè)寫(xiě)入到磁盤(pán)之前,會(huì)先保存該頁(yè)的副本,當(dāng)磁盤(pán)中的數(shù)據(jù)頁(yè)壞掉時(shí),可以利用副本來(lái)還原該頁(yè),再執(zhí)行重做,這就完美的解決了redo log無(wú)法修復(fù)壞頁(yè)的問(wèn)題啦。


Double write由兩部分組成,一部分是內(nèi)存中的double write緩存,共有128個(gè)頁(yè)(2MB);另一部分是磁盤(pán)上共享表空間中連續(xù)的128個(gè)頁(yè)(2MB)。


下面我們來(lái)看一下將數(shù)據(jù)頁(yè)寫(xiě)入磁盤(pán)的過(guò)程:

1 拷貝:當(dāng)一系列機(jī)制觸發(fā)數(shù)據(jù)頁(yè)緩沖池中的臟頁(yè)(圖中黃色塊)刷新時(shí),并不直接寫(xiě)入磁盤(pán)數(shù)據(jù)文件中,而是先拷貝到內(nèi)存中的double write緩存中;

2 順序?qū)懀?/span>接著將double write緩存區(qū)中的數(shù)據(jù)分兩次順序?qū)懭氲酱疟P(pán)的共享表空間中,每次寫(xiě)入1MB。共享表空間中的double write頁(yè)是連續(xù)存儲(chǔ)的,采用順序?qū)懙姆绞侥軌蚝苎杆俚耐瓿蓪?xiě)回操作,開(kāi)銷較小。

3 離散寫(xiě):將double write緩存區(qū)中的臟頁(yè)數(shù)據(jù)寫(xiě)入到實(shí)際的各個(gè)表空間文件。當(dāng)臟頁(yè)里的數(shù)據(jù)完全寫(xiě)回磁盤(pán)后,即可將double write中的頁(yè)標(biāo)記為可覆蓋。


如果在將臟頁(yè)刷新回磁盤(pán)的過(guò)程中發(fā)生崩潰,在恢復(fù)時(shí),InnoDB存儲(chǔ)引擎可以從共享表空間中的double write中找到該頁(yè)的最近的一個(gè)副本,將其復(fù)制到表空間文件,再利用redo log進(jìn)行重做,就完成了恢復(fù)過(guò)程。


因存在副本,媽媽再也不用擔(dān)心我的電腦突然斷電了!


有人可能會(huì)問(wèn),在寫(xiě)redo log的時(shí)候是否需要double write支持呢?


答案是不需要的,因?yàn)閞edo log在往磁盤(pán)中記錄信息的時(shí)候是以512字節(jié)為單位進(jìn)行寫(xiě)入的,而磁盤(pán)IO的最小單位恰巧也是512字節(jié),那么就無(wú)所謂數(shù)據(jù)損壞啦。


有人可能會(huì)覺(jué)得開(kāi)啟double write會(huì)帶來(lái)性能的損耗,其實(shí)呢,內(nèi)存中的double write緩存對(duì)應(yīng)的磁盤(pán)共享表空間的文件是連續(xù)存儲(chǔ)的,寫(xiě)入時(shí)是順序?qū)?。順序?qū)懙男阅芊浅8?,稍微犧牲一點(diǎn)性能來(lái)保證數(shù)據(jù)頁(yè)的完整是非常有必要的!


關(guān)鍵詞: 軍車車牌識(shí)別 部隊(duì)門(mén)禁系統(tǒng) 智慧軍營(yíng) 數(shù)字軍營(yíng) 營(yíng)區(qū)出入管理系統(tǒng) 部隊(duì)請(qǐng)銷假系統(tǒng) 部隊(duì)派車系統(tǒng) 數(shù)字營(yíng)區(qū) 智慧營(yíng)區(qū) 智慧軍營(yíng)整體解決方案 智慧部隊(duì) 智慧軍隊(duì) 數(shù)字部隊(duì) 智能化營(yíng)區(qū) 部隊(duì)人臉識(shí)別系統(tǒng) 涉密管理系統(tǒng) 營(yíng)房管理系統(tǒng) 維修管理系統(tǒng) 營(yíng)區(qū)訪客系統(tǒng) 離位報(bào)警系統(tǒng) 車輛維修系統(tǒng) 上海車牌識(shí)別系統(tǒng) 部隊(duì)停車場(chǎng)管理系統(tǒng)

電話: 18117117761(24小時(shí))? ? 021-59786133? 郵箱:yuchengzhineng@qq.com ?QQ: 9223677 ? 9603426 ? 529131638

Copyright 2019 twgds.cn 上海譽(yù)澄智能科技有限公司 版權(quán)所有 All Rights Reserved ? 網(wǎng)站移動(dòng)版入口

滬公網(wǎng)安備 31011402002854號(hào) 滬ICP備10219392號(hào)-1