天天看點

mysql doble write_innodb的磁盤IO(read-ahead和doublewrite技術)(來自于mysql文檔)

InnoDB使用模拟異步磁盤I/O:InnoDB建立許多線程來處理I/O操作,比如read-ahead(預讀).

在InnoDB中有兩個read-ahead試探:

(注:Innodb的記錄在檔案中的順序是按照主鍵順序存儲)

(1)在連續read-ahead中,如果InnoDB注意到在表空間中對一個片斷的通路方式是連續的,它就預先布置一批資料庫頁的讀給I/O系統。

(2)在随機read-ahead中,如果InnoDB注意到表空間中的一些區域看起來進入完全讀進緩沖池中的進行中,它就布置剩餘的讀到I/O系統。

InnoDB使用一個被稱為doublewrite(雙寫)的新穎的檔案重新整理技術。它給作業系統崩潰或掉電後的恢複添加了安全,并且通過減少對fsync()操作的需要,它在多數Unix變種上改善了性能。

Doublewrite意為在向一個資料檔案寫頁之前,InnoDB首先把它們寫到一個毗鄰的表空間區域,稱為doublewrite緩沖。僅在寫然後重新整理到doublewrite已經完成之後,InnoDB寫頁面到它們在表空間中恰當的位置。如果作業系統在寫頁面的中間崩潰,在恢複過程中,InnoDB可以在随後從doublewrite緩沖中找到頁面的一個良好複制。

轉載自

http://blog.csdn.net/gtuu0123/article/details/5598609