文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
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 節,「雙寫緩衝區」