20.5.7 监控 X 插件

对于一般的 X 插件监控,使用它公开的状态变量。请参阅第 20.5.6.3 节,“X 插件状态变量”。有关监视消息压缩效果的具体信息,请参阅 监视 X 插件的连接压缩

监控 X 插件生成的 SQL

本节介绍如何监控 X Plugin 在运行 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作为本部分快速入门教程的一部分导入的架构。我们在Python模式下使用MySQL Shell,而\sql命令,使您能够在不更改为 SQL 模式的情况下发出 SQL 语句。这很重要,因为如果您改为尝试切换到 SQL 模式,该过程将显示此操作的结果而不是 X DevAPI 操作的结果。\sql 如果您在 JavaScript 模式下使用 MySQL Shell,则以相同的方式使用 该命令。

  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)

    如果此语句至少报告一行,则需要启用仪器。请参阅 第 27.4 节,“性能模式运行时配置”

  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 操作。