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」。