1. 程式人生 > >mysql 之 doublewrite buffer 機制

mysql 之 doublewrite buffer 機制

寫到 write tro 開啟 ont mysq sync io操作 iter

是什麽?

doublewrite buffer是mysql 系統表空間的一塊存儲區域。

有什麽用?

在Innodb將數據頁寫到數據存儲文件之前,存儲從Innodb緩存池刷過來的數據頁。且只有將數寫入doublewriter buffer後,Innodb才會進行數據頁的物理存儲。如果在數據頁寫盤時發生操作系統、存儲系統、或者myql進程中斷,Innodb可以從doublewriter buffer存儲中找回丟失的數據頁備份。

性能影響?

雖然數據總是雙份寫,但並不意味著需要雙倍的IO操作,或者IO能力。通過向操作系統發送fsync()命令,將數據以較大的連續數據塊的形式寫入doublewriter buffer。

doublewriter buffer多數情況下是默認開啟的,可以通過配置innnodb_doublewrite=0關閉

關閉doublewriter buffer可以在一定程度上提升數據庫層面性能,但是要處理好容災。可以在應用層面通過重試補償,或者數據檢查機制等處理寫中斷引發的問題。

mysql 之 doublewrite buffer 機制