innodb double write原理在ocean base中應用

innodb double write原理
基本原理是將數據寫兩份
將Dirty page刷到磁盤時,先將page刷到磁盤上的一個區域tablespace,然後擇機將page拷貝到數據文件對應的位置。
tablespace是innodb在磁盤上分配的一塊區域,包含100個page。
每個page都有自己的checksum,來校驗本身數據的正確性。

用double write的原因:
爲了處理partial page write
因爲innodb的page大小是16k,而文件系統寫磁盤的單位一般是4k,所以會出現這個page的前4k刷到磁盤,而由於機器袥機或是程序退出,而導致page中的其他數據沒有刷到磁盤的情況。即使有raid卡,有電池可以保證機器袥機,也可以有電量支持將數據刷新成功,但是當電池電量不足時,會導致出現partial page。

異常情況下的恢復:
恢復時,tablespace中的數據page校驗出錯,則直接丟棄。
如果tablespace中的數據page是正確的,則會將tablespace中的數據page,刷新到實際數據所在的位置。

性能影響:
在tablespace中寫刷page是順序寫,對性能影響不大。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章