Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Monitoring X Plugin

22.5.7 监控 X 插件

对于一般的 X 插件监控,请使用它暴露的状态变量。见第22.5.6.3节,“X 插件状态变量”。对于消息压缩的监控效果信息,请见监控 X 插件连接压缩

监控 X 插件生成的 SQL

本节描述了如何监控 X 插件在执行 X DevAPI 操作时生成的 SQL 语句。当您执行 CRUD 语句时,它将被翻译为 SQL 并对服务器执行。为了能够监控生成的 SQL,必须启用 Performance Schema 表。SQL 将被注册到performance_schema.events_statements_currentperformance_schema.events_statements_historyperformance_schema.events_statements_history_long表中。以下示例使用了world_x架构,作为本节快速入门 tutorials 的一部分。我们使用 MySQL Shell 在 Python 模式下,并使用\sql命令,可以在不更改到 SQL 模式的情况下执行 SQL 语句。这很重要,因为如果您尝试切换到 SQL 模式,结果将显示该操作的结果,而不是 X DevAPI 操作的结果。\sql命令在使用 MySQL Shell 在 JavaScript 模式下时也是一样的。

  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 Runtime Configuration”

  3. 获取当前连接的线程 ID。问题:

    mysql-py> \sql SELECT thread_id INTO @id FROM performance_schema.threads WHERE processlist_id=connection_id()
  4. 执行 X DevAPI CRUD 操作以获取生成的 SQL。例如,问题:

    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 插件根据最近的语句生成的 SQL,例如 X DevAPI CRUD 操作的结果。