InnoDB 使用背景執行緒來處理各種 I/O 要求。您可以使用 innodb_read_io_threads 和 innodb_write_io_threads 配置參數來設定背景執行緒的數量,這些執行緒用於處理資料頁面的讀取和寫入 I/O。這些參數分別表示用於讀取和寫入要求的背景執行緒數量。它們在所有支援的平台上都有效。您可以在 MySQL 選項檔案(my.cnf 或 my.ini)中設定這些參數的值;您無法動態變更值。innodb_read_io_threads 的預設值是系統上可用的邏輯處理器數量除以 2,預設最小值為 4。innodb_write_io_threads 的預設值為 4。這兩個選項的允許值範圍都是 1-64。
這些配置選項的目的是使 InnoDB 在高階系統上更具擴展性。每個背景執行緒最多可以處理 256 個擱置的 I/O 要求。背景 I/O 的主要來源是預讀要求。InnoDB 嘗試平衡傳入要求的負載,使大多數背景執行緒平均分擔工作。InnoDB 也嘗試將來自相同範圍的讀取要求分配給同一執行緒,以增加合併要求的機會。如果您擁有高階 I/O 子系統,並且在 SHOW ENGINE INNODB STATUS 輸出中看到超過 64 × innodb_read_io_threads 個擱置的讀取要求,您可以透過增加 innodb_read_io_threads 的值來提高效能。
在 Linux 系統上,InnoDB 預設使用非同步 I/O 子系統來執行資料檔案頁面的預讀和寫入請求,這會改變 InnoDB 背景執行緒處理這些類型 I/O 請求的方式。更多資訊,請參閱第 17.8.6 節「在 Linux 上使用非同步 I/O」。
關於 InnoDB I/O 效能的更多資訊,請參閱第 10.5.8 節「最佳化 InnoDB 磁碟 I/O」。