文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國信紙) - 40.0Mb
PDF (A4) - 40.1Mb
手冊頁 (TGZ) - 258.2Kb
手冊頁 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  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 額外負荷也應降到最低,但您可能想要進一步減少它。或者,您不關心計時事件,並想要停用計時程式碼以消除計時額外負荷。

    • 避免在您不感興趣的事件中填滿目前事件或歷史表格。預先篩選會在這些表格中為已啟用儀器類型的列執行個體留下更多空間。如果您只啟用具有預先篩選的檔案儀器,則不會收集非檔案儀器的列。使用後篩選,將會收集非檔案事件,為檔案事件留下較少的列。

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

  • 後置篩選。 這涉及在查詢中使用 WHERE 子句,從效能結構描述表格中選擇資訊,以指定您想要查看哪些可用的事件。後置篩選是針對每個使用者執行的,因為個別使用者會選擇他們感興趣的可用事件。

    使用後置篩選的原因

    • 避免為個別使用者決定哪些事件資訊是他們感興趣的。

    • 在事先不知道使用預先篩選要施加哪些限制時,使用效能結構描述來調查效能問題。

以下章節將提供有關預先篩選的更多詳細資訊,並提供在篩選操作中命名儀器或消費者的指南。有關編寫查詢以檢索資訊(後置篩選)的資訊,請參閱第 29.5 節,「效能結構描述查詢」