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


22.5.7 監控 X Plugin

如需一般的 X Plugin 監控,請使用其公開的狀態變數。請參閱第 22.5.6.3 節〈X Plugin 狀態變數〉。如需特別關於監控訊息壓縮效果的資訊,請參閱監控 X Plugin 的連線壓縮

監控 X Plugin 產生的 SQL

本節說明如何監控您執行 X DevAPI 作業時 X Plugin 產生的 SQL 陳述式。當您執行 CRUD 陳述式時,會將其轉譯為 SQL,並針對伺服器執行。為了能夠監控產生的 SQL,必須啟用 Performance Schema 表格。SQL 會在performance_schema.events_statements_currentperformance_schema.events_statements_historyperformance_schema.events_statements_history_long 表格下註冊。下列範例使用 world_x 結構描述,該結構描述是作為本節快速入門教學的一部分匯入的。我們在 Python 模式中使用 MySQL Shell,以及 \sql 命令,讓您無需切換至 SQL 模式即可發出 SQL 陳述式。這很重要,因為如果您改為嘗試切換至 SQL 模式,程序會顯示此操作的結果,而不是 X DevAPI 操作的結果。如果您在 JavaScript 模式中使用 MySQL Shell,則會以相同方式使用 \sql 命令。

  1. 檢查是否已啟用 events_statements_history 消費者。發出

    mysql-py> \sql SELECT enabled FROM performance_schema.setup_consumers WHERE NAME = 'events_statements_history'
    +---------+
    | enabled |
    +---------+
    | YES     |
    +---------+
  2. 檢查所有儀器是否將資料回報給消費者。發出

    mysql-py> \sql SELECT NAME, ENABLED, TIMED FROM performance_schema.setup_instruments WHERE NAME LIKE 'statement/%' AND NOT (ENABLED and TIMED)

    如果此陳述式回報至少一個資料列,您需要啟用儀器。請參閱第 29.4 節〈Performance Schema 執行階段組態〉

  3. 取得目前連線的執行緒 ID。發出

    mysql-py> \sql SELECT thread_id INTO @id FROM performance_schema.threads WHERE processlist_id=connection_id()
  4. 執行您想要查看所產生 SQL 的 X DevAPI CRUD 操作。例如,發出

    mysql-py> db.CountryInfo.find("Name = :country").bind("country", "Italy")

    您不得發出任何進一步的操作,以便下一步顯示正確的結果。

  5. 顯示此執行緒 ID 所做的最後一個 SQL 查詢。發出

    mysql-py> \sql SELECT THREAD_ID, MYSQL_ERRNO,SQL_TEXT FROM performance_schema.events_statements_history WHERE THREAD_ID=@id ORDER BY TIMER_START DESC LIMIT 1;
    +-----------+-------------+--------------------------------------------------------------------------------------+
    | THREAD_ID | MYSQL_ERRNO | SQL_TEXT                                                                             |
    +-----------+-------------+--------------------------------------------------------------------------------------+
    |        29 |           0 | SELECT doc FROM `world_x`.`CountryInfo` WHERE (JSON_EXTRACT(doc,'$.Name') = 'Italy') |
    +-----------+-------------+--------------------------------------------------------------------------------------+

    結果會顯示 X Plugin 根據最近的陳述式產生的 SQL,在此情況下為上一個步驟中的 X DevAPI CRUD 操作。