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