MySQL 8.4 發行注意事項
setup_instruments
資料表列出可用的儀器
mysql> SELECT NAME, ENABLED, TIMED
FROM performance_schema.setup_instruments;
+---------------------------------------------------+---------+-------+
| NAME | ENABLED | TIMED |
+---------------------------------------------------+---------+-------+
...
| stage/sql/end | NO | NO |
| stage/sql/executing | NO | NO |
| stage/sql/init | NO | NO |
| stage/sql/insert | NO | NO |
...
| statement/sql/load | YES | YES |
| statement/sql/grant | YES | YES |
| statement/sql/check | YES | YES |
| statement/sql/flush | YES | YES |
...
| wait/synch/mutex/sql/LOCK_global_read_lock | YES | YES |
| wait/synch/mutex/sql/LOCK_global_system_variables | YES | YES |
| wait/synch/mutex/sql/LOCK_lock_db | YES | YES |
| wait/synch/mutex/sql/LOCK_manager | YES | YES |
...
| wait/synch/rwlock/sql/LOCK_grant | YES | YES |
| wait/synch/rwlock/sql/LOGGER::LOCK_logger | YES | YES |
| wait/synch/rwlock/sql/LOCK_sys_init_connect | YES | YES |
| wait/synch/rwlock/sql/LOCK_sys_init_slave | YES | YES |
...
| wait/io/file/sql/binlog | YES | YES |
| wait/io/file/sql/binlog_index | YES | YES |
| wait/io/file/sql/casetest | YES | YES |
| wait/io/file/sql/dbopt | YES | YES |
...
若要控制是否啟用儀器,請將其 ENABLED
欄設定為 YES
或 NO
。若要設定是否為已啟用的儀器收集計時資訊,請將其 TIMED
值設定為 YES
或 NO
。如第 29.4.1 節「效能綱要事件計時」所述,設定 TIMED
欄會影響效能綱要資料表的內容。
對大多數setup_instruments
列的修改會立即影響監控。對於某些儀器,修改僅在伺服器啟動時有效;在執行階段變更它們不會有任何影響。這主要影響伺服器中的互斥鎖、條件和讀寫鎖,但可能還有其他儀器也是如此。
setup_instruments
資料表提供對事件產生最基本形式的控制。若要根據受監控的物件或執行緒類型進一步精細化事件產生,可以使用其他資料表,如第 29.4.3 節「事件預先過濾」中所述。
下列範例示範對 setup_instruments
資料表可能進行的操作。這些變更與其他預先過濾作業一樣,會影響所有使用者。其中一些查詢使用 LIKE
運算子和模式比對儀器名稱。如需指定模式以選取儀器的其他資訊,請參閱第 29.4.9 節「為過濾作業命名儀器或消費者」。
停用所有儀器
UPDATE performance_schema.setup_instruments SET ENABLED = 'NO';
現在不會收集任何事件。
停用所有檔案儀器,將它們加入目前的已停用儀器集合中
UPDATE performance_schema.setup_instruments SET ENABLED = 'NO' WHERE NAME LIKE 'wait/io/file/%';
僅停用檔案儀器,啟用所有其他儀器
UPDATE performance_schema.setup_instruments SET ENABLED = IF(NAME LIKE 'wait/io/file/%', 'NO', 'YES');
啟用除了
mysys
程式庫中的儀器之外的所有儀器UPDATE performance_schema.setup_instruments SET ENABLED = CASE WHEN NAME LIKE '%/mysys/%' THEN 'YES' ELSE 'NO' END;
停用特定儀器
UPDATE performance_schema.setup_instruments SET ENABLED = 'NO' WHERE NAME = 'wait/synch/mutex/mysys/TMPDIR_mutex';
若要切換儀器的狀態,請「翻轉」其
ENABLED
值UPDATE performance_schema.setup_instruments SET ENABLED = IF(ENABLED = 'YES', 'NO', 'YES') WHERE NAME = 'wait/synch/mutex/mysys/TMPDIR_mutex';
停用所有事件的計時
UPDATE performance_schema.setup_instruments SET TIMED = 'NO';