文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


17.11.1 InnoDB 磁碟 I/O

InnoDB 盡可能使用非同步磁碟 I/O,方法是建立多個執行緒來處理 I/O 操作,同時允許其他資料庫操作在 I/O 仍在進行時繼續。在 Linux 和 Windows 平台上,InnoDB 使用可用的作業系統和程式庫函式來執行原生非同步 I/O。在其他平台上,InnoDB 仍然使用 I/O 執行緒,但執行緒實際上可能會等待 I/O 請求完成;此技術稱為模擬非同步 I/O。

預讀

如果 InnoDB 可以判斷出資料很可能很快會被需要,它會執行預讀操作,將該資料帶入緩衝池,以便在記憶體中可用。對連續資料發出少量的大型讀取請求,可能比發出多個分散的小型請求更有效率。InnoDB 中有兩種預讀啟發式演算法

  • 在循序預讀中,如果 InnoDB 注意到表空間中某個區段的存取模式是循序的,它會預先將一批資料庫頁面的讀取發佈到 I/O 系統。

  • 在隨機預讀中,如果 InnoDB 注意到表空間中的某些區域似乎正在完全讀取到緩衝池中,它會將剩餘的讀取發佈到 I/O 系統。

有關設定預讀啟發式演算法的資訊,請參閱第 17.8.3.4 節「設定 InnoDB 緩衝池預取 (預讀)」

雙寫緩衝區

InnoDB 使用一種新穎的檔案刷新技術,其中涉及一個稱為雙寫緩衝區的結構,在大多數情況下預設啟用 (innodb_doublewrite=ON)。它增加了在意外退出或斷電後進行復原的安全性,並透過減少 fsync() 操作的需求,提高了大多數 Unix 變體上的效能。

在將頁面寫入資料檔案之前,InnoDB 會先將它們寫入稱為雙寫緩衝區的儲存區域。只有在寫入和刷新到雙寫緩衝區完成後,InnoDB 才會將頁面寫入資料檔案中的正確位置。如果在頁面寫入過程中,作業系統、儲存子系統或意外的 mysqld 程序退出 (導致損壞頁面狀況),InnoDB 後來可以在復原期間從雙寫緩衝區找到該頁面的良好副本。

有關雙寫緩衝區的更多資訊,請參閱第 17.6.4 節「雙寫緩衝區」