InnoDB
主執行緒和其他執行緒會在背景中執行各種工作,其中大多數與 I/O 相關,例如從緩衝池刷新髒頁,以及將變更從變更緩衝區寫入適當的次要索引。InnoDB
會嘗試以不影響伺服器正常運作的方式執行這些工作。它會嘗試估計可用的 I/O 頻寬,並調整其活動以利用可用的容量。
innodb_io_capacity
變數定義 InnoDB
可用的整體 I/O 容量。它應該設定為系統每秒可以執行的 I/O 作業數 (IOPS) 的近似值。設定 innodb_io_capacity
時,InnoDB
會根據設定的值估計可用於背景工作的 I/O 頻寬。
您可以將 innodb_io_capacity
設定為 100 或更大的值。預設值為 10000
。通常,較快硬碟機、RAID 設定和固態硬碟 (SSD) 的值會高於較低階的儲存裝置,例如高達 7200 RPM 的硬碟機。
理想情況下,請盡可能將設定保持在實際的低值,但不要太低而導致背景活動落後。如果值太高,則會從緩衝池和變更緩衝區中過快移除資料,以致快取無法提供顯著的好處。對於能夠執行較高 I/O 速率的忙碌系統,您可以設定較高的值,以協助伺服器處理與高資料列變更速率相關的背景維護工作。通常,您可以根據用於 InnoDB
I/O 的磁碟機數量來增加值。例如,您可以在使用多個磁碟或 SSD 的系統上增加值。
雖然您可以指定一百萬之類的高值,但實際上,如此大的值幾乎沒有好處。一般來說,除非您確定較低的值不足以應付您的工作負載,否則不建議使用高於 20000 的值。另請參閱 innodb_io_capacity_max
選項,此選項會在刷新落後時自動增加此值。
調整 innodb_io_capacity
時,請考慮寫入工作負載。具有大量寫入工作負載的系統可能會受益於較高的設定。對於具有少量寫入工作負載的系統,較低的設定可能就足夠了。
innodb_io_capacity
設定不是每個緩衝池執行個體的設定。可用的 I/O 容量會平均分配給緩衝池執行個體以進行刷新活動。
您可以在 MySQL 選項檔案 (my.cnf
或 my.ini
) 中設定 innodb_io_capacity
值,或使用 SET GLOBAL
陳述式在執行階段修改它,這需要足夠的權限才能設定全域系統變數。請參閱 第 7.1.9.1 節「系統變數權限」。
innodb_flush_sync
變數預設為啟用,這會導致在 檢查點發生的 I/O 活動爆發期間忽略 innodb_io_capacity
設定。若要堅持使用 innodb_io_capacity
和 innodb_io_capacity_max
設定定義的 I/O 速率,請停用 innodb_flush_sync
。
您可以在 MySQL 選項檔案(my.cnf
或 my.ini
)中設定 innodb_flush_sync
的值,或是在執行階段使用 SET GLOBAL
陳述式修改它,這需要足夠的權限才能設定全域系統變數。請參閱第 7.1.9.1 節「系統變數權限」。
如果刷新活動落後,InnoDB
可以更積極地刷新,以高於 innodb_io_capacity
變數定義的每秒 I/O 操作次數 (IOPS) 速率進行。 innodb_io_capacity_max
變數定義在這種情況下 InnoDB
背景任務執行的最大 IOPS 數量。
如果您在啟動時指定了 innodb_io_capacity
設定,但沒有為 innodb_io_capacity_max
指定值,則 innodb_io_capacity_max
預設為 innodb_io_capacity
值的兩倍。
在設定 innodb_io_capacity_max
時,通常以 innodb_io_capacity
的兩倍作為良好的起點。與 innodb_io_capacity
設定一樣,保持設定盡可能低,但不要太低,以至於 InnoDB
無法充分擴展超出 innodb_io_capacity
設定的 IOPS 速率。
調整 innodb_io_capacity_max
時,請考慮寫入工作負載。具有大量寫入工作負載的系統可能會受益於更高的設定。較低的設定可能足以應付寫入工作負載較小的系統。
innodb_io_capacity_max
的值不能設定低於 innodb_io_capacity
的值。
使用 SET
陳述式(SET GLOBAL innodb_io_capacity_max=DEFAULT
)將 innodb_io_capacity_max
設定為 DEFAULT
會將 innodb_io_capacity_max
設定為預設值。在 MySQL 8.4 之前,這會將其設定為最大值而非預設值。
innodb_io_capacity_max
限制適用於所有緩衝池實例。它不是每個緩衝池實例的設定。