當啟用 innodb_dedicated_server
時,InnoDB
會自動設定以下變數
-
注意
innodb_log_file_size
和innodb_log_files_in_group
已被棄用,並由innodb_redo_log_capacity
取代。
只有在 MySQL 執行個體位於專用伺服器上,可以利用所有可用系統資源時,才考慮啟用 innodb_dedicated_server
。例如,如果您在僅執行 MySQL 的 Docker 容器或專用虛擬機器中執行 MySQL 伺服器,請考慮啟用 innodb_dedicated_server
。如果 MySQL 執行個體與其他應用程式共用系統資源,則不建議啟用 innodb_dedicated_server
。
以下資訊說明如何自動設定每個變數。
緩衝池大小是根據伺服器上偵測到的記憶體量來設定的。
表格 17.8 自動設定的緩衝池大小
偵測到的伺服器記憶體 緩衝池大小 小於 1GB 128MB (預設值) 1GB 至 4GB 偵測到的伺服器記憶體
* 0.5大於 4GB 偵測到的伺服器記憶體
* 0.75重做日誌容量是根據伺服器上可用的邏輯處理器數量來設定的。公式為(可用邏輯處理器數量 / 2)GB,最大動態預設值為 16 GB。
注意在 MySQL 8.4 之前,此值是基於可用記憶體而不是可用邏輯處理器。
innodb_log_file_size
(已棄用)日誌檔案大小是根據自動設定的緩衝池大小來設定的。
innodb_log_files_in_group
(已棄用)日誌檔案的數量是根據自動設定的緩衝池大小來設定的。
注意如果四捨五入的緩衝池大小值小於 2GB,則強制執行最小
innodb_log_files_in_group
值為 2。
如果在選項檔案或其他地方明確配置了自動配置的選項,則會使用明確指定的設定,並將類似以下的啟動警告列印到 stderr
。
[警告] [000000] InnoDB: 因為已明確指定 innodb_buffer_pool_size=134217728,所以 innodb_dedicated_server 選項會被 innodb_buffer_pool_size 忽略。
明確配置一個選項不會阻止其他選項的自動配置。
如果啟用 innodb_dedicated_server
且明確配置了 innodb_buffer_pool_size
,則根據緩衝池大小配置的變數會使用根據伺服器上檢測到的記憶體量計算出的緩衝池大小值,而不是明確定義的緩衝池大小值。
每次啟動 MySQL 伺服器時,都會評估並重新配置自動配置的設定(如有必要)。