文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
手冊頁 (TGZ) - 258.2Kb
手冊頁 (Zip) - 365.3Kb
資訊 (Gzip) - 4.0Mb
資訊 (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  配置 InnoDB I/O 容量

17.8.7 配置 InnoDB I/O 容量

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.cnfmy.ini) 中設定 innodb_io_capacity 值,或使用 SET GLOBAL 陳述式在執行階段修改它,這需要具有足夠的權限才能設定全域系統變數。請參閱 第 7.1.9.1 節,〈系統變數權限〉

在檢查點忽略 I/O 容量

預設啟用的 innodb_flush_sync 變數會導致在檢查點發生 I/O 活動突發時,忽略 innodb_io_capacity 設定。若要遵守 innodb_io_capacityinnodb_io_capacity_max 設定所定義的 I/O 速率,請停用 innodb_flush_sync

您可以在 MySQL 選項檔案(my.cnfmy.ini)中設定 innodb_flush_sync 的值,或使用 SET GLOBAL 陳述式在執行階段修改它,這需要足夠的權限才能設定全域系統變數。請參閱第 7.1.9.1 節,〈系統變數權限〉

設定 I/O 容量上限

如果刷新活動落後,InnoDB 可以更積極地刷新,其每秒 I/O 操作 (IOPS) 速率會高於 innodb_io_capacity 變數所定義的速率。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 無法充分將 IOPS 速率擴展到 innodb_io_capacity 設定之上。

在調整 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 設定為預設值。

innodb_io_capacity_max 限制適用於所有緩衝池實例。它不是每個緩衝池實例的設定。