若要使用 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
表格中的消費者名稱使用底線,但是對於在啟動時設定的消費者,名稱中的破折號和底線是等效的。
效能架構包含數個提供組態資訊的系統變數
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
,表示效能架構是否已啟用或停用。其他變數表示表格大小(列數)或記憶體配置值。
啟用效能架構後,效能架構實例的數量會影響伺服器的記憶體用量,甚至可能達到很大的程度。效能架構會自動調整許多參數,以便僅在需要時使用記憶體;請參閱第 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。