文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  優化 InnoDB 配置變數

10.5.9 優化 InnoDB 配置變數

不同的設定對於具有輕量、可預測負載的伺服器,與始終以接近滿載的容量運行的伺服器,或經歷高活動峰值的伺服器,會有最佳的表現。

由於 InnoDB 儲存引擎會自動執行許多最佳化,因此許多效能調整工作都涉及監控,以確保資料庫運作良好,並在效能下降時變更組態選項。請參閱第 17.16 節「InnoDB 與 MySQL Performance Schema 的整合」,以取得有關詳細 InnoDB 效能監控的資訊。

您可以執行的主要組態步驟包括

  • 控制 InnoDB 緩衝變更資料的資料變更作業類型,以避免頻繁的小型磁碟寫入。請參閱組態變更緩衝。啟用變更緩衝可以在 IO 繫結的工作負載上提供更好的效能,但可能會在復原、大量載入或緩衝池調整大小期間造成問題。停用它(MySQL 8.4 的預設設定)有助於確保穩定性,即使可能會降低效能。

  • 使用 innodb_adaptive_hash_index 選項開啟和關閉自適應雜湊索引功能。請參閱第 17.5.3 節「自適應雜湊索引」,以取得更多資訊。您可能會在不尋常的活動期間變更此設定,然後將其還原為原始設定。

  • 如果內容切換是瓶頸,請設定 InnoDB 處理的並行執行緒數目限制。請參閱第 17.8.4 節「設定 InnoDB 的執行緒並行性」

  • 使用其預先讀取作業控制 InnoDB 執行的預先擷取量。當系統有未使用的 I/O 容量時,更多預先讀取可以改善查詢的效能。過多的預先讀取可能會導致負載過重的系統效能定期下降。請參閱第 17.8.3.4 節「設定 InnoDB 緩衝池預先擷取(預先讀取)」

  • 如果您的 I/O 子系統效能強大,但預設值無法充分利用,可以增加讀取或寫入操作的背景執行緒數量。請參閱第 17.8.5 節,「設定背景 InnoDB I/O 執行緒的數量」

  • 控制 InnoDB 在背景中執行的 I/O 量。請參閱第 17.8.7 節,「設定 InnoDB I/O 容量」。如果您觀察到效能週期性下降,您可能需要縮減此設定。

  • 控制 InnoDB 執行特定類型背景寫入的演算法。請參閱第 17.8.3.5 節,「設定緩衝池刷新」。此演算法適用於某些類型的工作負載,但不適用於其他類型,因此如果您觀察到效能週期性下降,您可能會停用此功能。

  • 利用多核心處理器及其快取記憶體配置,以盡量減少內容切換的延遲。請參閱第 17.8.8 節,「設定自旋鎖輪詢」

  • 防止諸如資料表掃描之類的一次性操作干擾儲存在 InnoDB 緩衝快取中經常存取的資料。請參閱第 17.8.3.3 節,「使緩衝池具備掃描抗性」

  • 調整日誌檔案大小,使其對可靠性和當機復原具有意義。InnoDB 日誌檔案通常保持很小,以避免當機後啟動時間過長。MySQL 5.5 中引入的優化加速了當機復原流程的某些步驟。尤其是,由於改進了記憶體管理演算法,掃描重做日誌並套用重做日誌的速度更快。如果您為了避免啟動時間過長而將日誌檔案人為地保持較小,您現在可以考慮增加日誌檔案大小,以減少重做日誌記錄回收時發生的 I/O。

  • 設定 InnoDB 緩衝池的大小和實例數量,這對於具有數 GB 緩衝池的系統尤其重要。請參閱第 17.8.3.2 節,「設定多個緩衝池實例」

  • 增加並行交易的最大數量,這可以顯著提高最繁忙資料庫的可擴展性。請參閱第 17.6.6 節,「復原日誌」

  • 將清除操作(一種垃圾收集類型)移至背景執行緒。請參閱第 17.8.9 節,「清除設定」。為了有效衡量此設定的結果,請先調整其他與 I/O 相關和與執行緒相關的設定。

  • 減少 InnoDB 在並行執行緒之間切換的次數,以便繁忙伺服器上的 SQL 操作不會排隊並形成交通堵塞。為 innodb_thread_concurrency 選項設定一個值,對於高效能的現代系統,大約設定為 32。將 innodb_concurrency_tickets 選項的值增加,通常約為 5000 左右。此選項組合設定了 InnoDB 在任何時間處理的執行緒數量上限,並允許每個執行緒在被換出之前執行大量工作,以便等待執行緒的數量保持在較低水平,並且操作可以完成而不會過度地內容切換。