Double Write的思路很簡單:
在覆蓋磁盤上的數(shù)據(jù)前柑爸,先將Page的內容寫入到磁盤上的其他地方(InnoDB存儲引擎中的doublewrite buffer,這里的buffer不是內存空間灌闺,是磁盤上的空間).
然后再將Page的內容覆蓋到磁盤上原來的數(shù)據(jù)。
如果在1步驟時系統(tǒng)故障蓝谨,原來的數(shù)據(jù)沒有被覆蓋私股,還是完整的。
如果在2步驟時系統(tǒng)故障骡男,原來的數(shù)據(jù)不完整了,但是新數(shù)據(jù)已經被完整的寫入了doublewrite buffer傍睹。 因此系統(tǒng)恢復時就可以用doublewrite buffer中的新Page來覆蓋這個不完整的page隔盛。