W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
預(yù)寫(xiě)式日志(WAL)是保證數(shù)據(jù)完整性的一種標(biāo)準(zhǔn)方法。對(duì)其詳盡的描述幾乎可以在所有(如果不是全部)有關(guān)事務(wù)處理的書(shū)中找到。簡(jiǎn)單來(lái)說(shuō),WAL的中心概念是數(shù)據(jù)文件(存儲(chǔ)著表和索引)的修改必須在這些動(dòng)作被日志記錄之后才被寫(xiě)入,即在描述這些改變的日志記錄被刷到持久存儲(chǔ)以后。如果我們遵循這種過(guò)程,我們不需要在每個(gè)事務(wù)提交時(shí)刷寫(xiě)數(shù)據(jù)頁(yè)面到磁盤(pán),因?yàn)槲覀冎涝诎l(fā)生崩潰時(shí)可以使用日志來(lái)恢復(fù)數(shù)據(jù)庫(kù):任何還沒(méi)有被應(yīng)用到數(shù)據(jù)頁(yè)面的改變可以根據(jù)其日志記錄重做(這是前滾恢復(fù),也被稱為REDO)。
因?yàn)?acronym class="acronym">WAL在崩潰后恢復(fù)數(shù)據(jù)庫(kù)文件內(nèi)容,不需要日志化文件系統(tǒng)作為數(shù)據(jù)文件或WAL文件的可靠存儲(chǔ)。實(shí)際上,日志會(huì)降低性能,特別是如果日志導(dǎo)致文件系統(tǒng)數(shù)據(jù)被刷寫(xiě)到磁盤(pán)。幸運(yùn)地是,日志期間的數(shù)據(jù)刷寫(xiě)常常可以在文件系統(tǒng)掛載選項(xiàng)中被禁用,例如在Linux ext3文件系統(tǒng)中可以使用data=writeback
。在崩潰后日志化文件系統(tǒng)確實(shí)可以提高啟動(dòng)速度。
使用WAL可以顯著降低磁盤(pán)的寫(xiě)次數(shù),因?yàn)橹挥腥罩疚募枰凰⒊龅酱疟P(pán)以保證事務(wù)被提交,而被事務(wù)改變的每一個(gè)數(shù)據(jù)文件則不必被刷出。日志文件被按照順序?qū)懭耄虼送饺罩镜拇鷥r(jià)要遠(yuǎn)低于刷寫(xiě)數(shù)據(jù)頁(yè)面的代價(jià)。在處理很多影響數(shù)據(jù)存儲(chǔ)不同部分的小事務(wù)的服務(wù)器上這一點(diǎn)尤其明顯。此外,當(dāng)服務(wù)器在處理很多小的并行事務(wù)時(shí),日志文件的一個(gè)fsync
可以提交很多事務(wù)。
WAL也使得在線備份和時(shí)間點(diǎn)恢復(fù)能被支持,如第 25.3 節(jié)所述。通過(guò)歸檔WAL數(shù)據(jù),我們可以支持回轉(zhuǎn)到被可用WAL數(shù)據(jù)覆蓋的任何時(shí)間:我們簡(jiǎn)單地安裝數(shù)據(jù)庫(kù)的一個(gè)較早的物理備份,并且重放WAL日志一直到所期望的時(shí)間。另外,該物理備份不需要是數(shù)據(jù)庫(kù)狀態(tài)的一個(gè)一致的快照 — 如果它的制作經(jīng)過(guò)了一段時(shí)間,則重放這一段時(shí)間的WAL日志將會(huì)修復(fù)任何內(nèi)部不一致性。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: