对于一般的 X 插件监控,请使用它公开的状态变量。参见 第 22.5.6.3 节“X 插件状态变量”。有关专门监控消息压缩效果的信息,请参见 监控 X 插件的连接压缩。
本节介绍如何在运行 X DevAPI 操作时监控 X 插件生成的 SQL 语句。执行 CRUD 语句时,它会被转换为 SQL 并针对服务器执行。为了能够监控生成的 SQL,必须启用性能模式表。SQL 在 performance_schema.events_statements_current、performance_schema.events_statements_history 和 performance_schema.events_statements_history_long 表下注册。以下示例使用 world_x 模式,该模式作为本节快速入门教程的一部分导入。我们在 Python 模式下使用 MySQL Shell 和 \sql 命令,该命令允许您在不更改为 SQL 模式的情况下发出 SQL 语句。这很重要,因为如果您尝试切换到 SQL 模式,则过程将显示此操作的结果,而不是 X DevAPI 操作的结果。如果您在 JavaScript 模式下使用 MySQL Shell,则以相同的方式使用 \sql 命令。
- 检查 - events_statements_history使用者是否已启用。发出- mysql-py> \sql SELECT enabled FROM performance_schema.setup_consumers WHERE NAME = 'events_statements_history' +---------+ | enabled | +---------+ | YES | +---------+
- 检查所有检测器是否向使用者报告数据。发出 - mysql-py> \sql SELECT NAME, ENABLED, TIMED FROM performance_schema.setup_instruments WHERE NAME LIKE 'statement/%' AND NOT (ENABLED and TIMED)- 如果此语句至少报告一行,则需要启用检测器。参见 第 29.4 节“性能模式运行时配置”。 
- 获取当前连接的线程 ID。发出 - mysql-py> \sql SELECT thread_id INTO @id FROM performance_schema.threads WHERE processlist_id=connection_id()
- 执行您要查看其生成的 SQL 的 X DevAPI CRUD 操作。例如,发出 - mysql-py> db.CountryInfo.find("Name = :country").bind("country", "Italy")- 您不得为下一步发出任何其他操作以显示正确的结果。 
- 显示此线程 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 操作。