文件首頁
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 參考手冊  /  ...  /  Performance Schema 事件篩選

29.4.2 Performance Schema 事件篩選

事件以生產者/消費者的方式處理

  • 工具化程式碼是事件的來源,並產生要收集的事件。setup_instruments 資料表列出可以收集事件的工具、它們是否已啟用,以及 (針對已啟用的工具) 是否收集計時資訊

    mysql> SELECT NAME, ENABLED, TIMED
           FROM performance_schema.setup_instruments;
    +---------------------------------------------------+---------+-------+
    | NAME                                              | ENABLED | TIMED |
    +---------------------------------------------------+---------+-------+
    ...
    | 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   |
    ...

    setup_instruments 資料表提供對事件產生最基本的控制形式。若要根據所監控的物件或執行緒類型進一步精簡事件產生,可以使用其他資料表,如第 29.4.3 節 「事件預先篩選」中所述。

  • Performance Schema 資料表是事件的目的地,並消耗事件。setup_consumers 資料表列出可以傳送事件資訊的消費者類型,以及它們是否已啟用

    mysql> SELECT * FROM performance_schema.setup_consumers;
    +----------------------------------+---------+
    | NAME                             | ENABLED |
    +----------------------------------+---------+
    | events_stages_current            | NO      |
    | events_stages_history            | NO      |
    | events_stages_history_long       | NO      |
    | events_statements_cpu            | NO      |
    | events_statements_current        | YES     |
    | events_statements_history        | YES     |
    | events_statements_history_long   | NO      |
    | events_transactions_current      | YES     |
    | events_transactions_history      | YES     |
    | events_transactions_history_long | NO      |
    | events_waits_current             | NO      |
    | events_waits_history             | NO      |
    | events_waits_history_long        | NO      |
    | global_instrumentation           | YES     |
    | thread_instrumentation           | YES     |
    | statements_digest                | YES     |
    +----------------------------------+---------+

可以在效能監控的不同階段進行篩選

  • 預先篩選。 這可以透過修改 Performance Schema 配置來完成,以便僅從生產者收集特定類型的事件,並且收集的事件僅更新特定消費者。若要執行此操作,請啟用或停用工具或消費者。預先篩選由 Performance Schema 執行,並且具有適用於所有使用者的全域效果。

    使用預先篩選的原因

    • 降低額外負荷。即使啟用所有工具,Performance Schema 的額外負荷也應降至最低,但您可能想要進一步降低它。或者,您不關心計時事件,並且想要停用計時程式碼以消除計時額外負荷。

    • 避免使用您不感興趣的事件填滿 current-events 或歷史資料表。預先篩選會在這些資料表中為已啟用的工具類型的列實例留下更多空間。如果您僅使用預先篩選啟用檔案工具,則不會收集非檔案工具的列。使用後篩選時,會收集非檔案事件,為檔案事件留下較少的列。

    • 避免維護某些類型的事件資料表。如果您停用消費者,伺服器不會花時間維護該消費者的目的地。例如,如果您不關心事件歷史記錄,則可以停用歷史記錄資料表消費者以提高效能。

  • 後篩選。 這涉及使用 WHERE 子句,這些子句會選取 Performance Schema 資料表的資訊,以指定您想要查看的可用事件。後篩選會以每個使用者的基礎執行,因為個別使用者會選取哪些可用的事件感興趣。

    使用後篩選的原因

    • 避免為個別使用者就哪些事件資訊感興趣做出決策。

    • 在事先不知道使用預先篩選所要實施的限制時,使用 Performance Schema 來調查效能問題。

以下章節會提供有關預先篩選的更多詳細資訊,並提供有關在篩選作業中命名工具或消費者的指導方針。如需有關撰寫查詢以擷取資訊 (後篩選) 的資訊,請參閱第 29.5 節 「Performance Schema 查詢」