若要使用 MySQL Performance Schema,必須在伺服器啟動時啟用,才能開始收集事件。
Performance Schema 預設為啟用。若要明確啟用或停用它,請使用設定為適當值的 performance_schema
變數啟動伺服器。例如,在伺服器 my.cnf
檔案中使用這些行
[mysqld]
performance_schema=ON
若伺服器在 Performance Schema 初始化期間無法配置任何內部緩衝區,則 Performance Schema 會自行停用並將 performance_schema
設定為 OFF
,且伺服器會在沒有檢測的情況下執行。
Performance Schema 也允許在伺服器啟動時設定工具和消費者。
若要在伺服器啟動時控制工具,請使用此格式的選項
--performance-schema-instrument='instrument_name=value'
在此,instrument_name
是工具名稱,例如 wait/synch/mutex/sql/LOCK_open
,而 value
是下列其中一個值
OFF
、FALSE
或0
:停用工具ON
、TRUE
或1
:啟用工具並計時COUNTED
:啟用工具並計數 (而不是計時)
每個 --performance-schema-instrument
選項只能指定一個工具名稱,但可以給定多個選項執行個體來設定多個工具。此外,工具名稱中允許使用模式,以設定符合模式的工具。若要將所有條件同步工具設定為啟用和計數,請使用此選項
--performance-schema-instrument='wait/synch/cond/%=COUNTED'
若要停用所有工具,請使用此選項
--performance-schema-instrument='%=OFF'
例外狀況:memory/performance_schema/%
工具是內建的,無法在啟動時停用。
較長的工具名稱字串優先於較短的模式名稱,無論順序為何。如需指定模式以選取工具的相關資訊,請參閱第 29.4.9 節,〈為篩選作業命名工具或消費者〉。
無法辨識的工具名稱會被忽略。稍後安裝的外掛程式可能會建立工具,此時會辨識並設定該名稱。
若要在伺服器啟動時控制消費者,請使用此格式的選項
--performance-schema-consumer-consumer_name=value
在此,consumer_name
是消費者名稱,例如 events_waits_history
,而 value
是下列其中一個值
OFF
、FALSE
或0
:不收集消費者的事件ON
、TRUE
或1
:收集消費者的事件
例如,若要啟用 events_waits_history
消費者,請使用此選項
--performance-schema-consumer-events-waits-history=ON
可以藉由檢查 setup_consumers
資料表來找到允許的消費者名稱。不允許使用模式。setup_consumers
資料表中的消費者名稱使用底線,但是對於在啟動時設定的消費者,名稱中的破折號和底線是等效的。
Performance Schema 包含數個提供設定資訊的系統變數
mysql> SHOW VARIABLES LIKE 'perf%';
+--------------------------------------------------------+---------+
| Variable_name | Value |
+--------------------------------------------------------+---------+
| performance_schema | ON |
| performance_schema_accounts_size | 100 |
| performance_schema_digests_size | 200 |
| performance_schema_events_stages_history_long_size | 10000 |
| performance_schema_events_stages_history_size | 10 |
| performance_schema_events_statements_history_long_size | 10000 |
| performance_schema_events_statements_history_size | 10 |
| performance_schema_events_waits_history_long_size | 10000 |
| performance_schema_events_waits_history_size | 10 |
| performance_schema_hosts_size | 100 |
| performance_schema_max_cond_classes | 80 |
| performance_schema_max_cond_instances | 1000 |
...
performance_schema
變數為 ON
或 OFF
,表示效能架構 (Performance Schema) 是否啟用。其他變數則表示表格大小 (列數) 或記憶體配置值。
啟用效能架構後,效能架構的實例數量會影響伺服器的記憶體佔用量,甚至可能影響很大。效能架構會自動調整許多參數,僅在需要時使用記憶體;請參閱第 29.17 節「效能架構記憶體配置模型」。
若要變更效能架構系統變數的值,請在伺服器啟動時設定它們。例如,在 my.cnf
檔案中放入以下幾行,即可變更等待事件的歷史記錄表格大小
[mysqld]
performance_schema
performance_schema_events_waits_history_size=20
performance_schema_events_waits_history_long_size=15000
如果未明確設定,效能架構會在伺服器啟動時自動調整數個參數的值。例如,它會以這種方式調整控制事件等待表格大小的參數。效能架構會以遞增方式配置記憶體,使其記憶體使用量隨著實際伺服器負載而調整,而不是在伺服器啟動期間配置所有需要的記憶體。因此,許多大小調整參數根本不需要設定。若要查看哪些參數是自動調整大小或自動調整的,請使用 mysqld --verbose --help 並檢查選項說明,或參閱第 29.15 節「效能架構系統變數」。
對於每個在伺服器啟動時未設定的自動調整大小參數,效能架構會根據以下系統值的值來決定如何設定其值,這些值被視為關於您如何配置 MySQL 伺服器的「提示」
max_connections
open_files_limit
table_definition_cache
table_open_cache
若要覆寫給定參數的自動調整大小或自動調整,請在啟動時將其設定為 -1 以外的值。在這種情況下,效能架構會將其設定為指定的值。
在執行期間,SHOW VARIABLES
會顯示自動調整大小參數的實際設定值。自動調整的參數則顯示為 -1。
如果停用效能架構,其自動調整大小和自動調整的參數仍會設定為 -1,且 SHOW VARIABLES
會顯示 -1。