Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

29.4.5 对象预过滤

性能模式的 setup_objects 表控制性能模式是否监控特定的表和存储程序对象。初始 setup_objects 内容如下所示:

mysql> SELECT * FROM performance_schema.setup_objects;
+-------------+--------------------+-------------+---------+-------+
| OBJECT_TYPE | OBJECT_SCHEMA      | OBJECT_NAME | ENABLED | TIMED |
+-------------+--------------------+-------------+---------+-------+
| EVENT       | mysql              | %           | NO      | NO    |
| EVENT       | performance_schema | %           | NO      | NO    |
| EVENT       | information_schema | %           | NO      | NO    |
| EVENT       | %                  | %           | YES     | YES   |
| FUNCTION    | mysql              | %           | NO      | NO    |
| FUNCTION    | performance_schema | %           | NO      | NO    |
| FUNCTION    | information_schema | %           | NO      | NO    |
| FUNCTION    | %                  | %           | YES     | YES   |
| PROCEDURE   | mysql              | %           | NO      | NO    |
| PROCEDURE   | performance_schema | %           | NO      | NO    |
| PROCEDURE   | information_schema | %           | NO      | NO    |
| PROCEDURE   | %                  | %           | YES     | YES   |
| TABLE       | mysql              | %           | NO      | NO    |
| TABLE       | performance_schema | %           | NO      | NO    |
| TABLE       | information_schema | %           | NO      | NO    |
| TABLE       | %                  | %           | YES     | YES   |
| TRIGGER     | mysql              | %           | NO      | NO    |
| TRIGGER     | performance_schema | %           | NO      | NO    |
| TRIGGER     | information_schema | %           | NO      | NO    |
| TRIGGER     | %                  | %           | YES     | YES   |
+-------------+--------------------+-------------+---------+-------+

setup_objects 表的修改立即影响对象监控。

OBJECT_TYPE 指示行应用于的对象类型。TABLE 过滤器影响表 I/O 事件 (wait/io/table/sql/handler 仪器) 和表锁事件 (wait/lock/table/sql/handler 仪器)。

OBJECT_SCHEMAOBJECT_NAME 应该包含一个文字模式或对象名称,或者 '%' 以匹配任何名称。

ENABLED 指示是否监控匹配对象,并且 TIMED 指示是否收集计时信息。设置 TIMED 列影响性能模式表内容,如 第 29.4.1 节,“性能模式事件计时” 所述。

默认对象配置的效果是监控所有对象,除了 mysqlINFORMATION_SCHEMAperformance_schema 数据库中的对象。(无论 setup_objects 的内容如何,INFORMATION_SCHEMA 数据库中的表都不会被监控;行 information_schema.% 只是明确地表明默认行为。)

当性能模式检查 setup_objects 中的匹配时,它首先尝试找到更具体的匹配。对于给定的 OBJECT_TYPE,性能模式按照以下顺序检查行:

  • OBJECT_SCHEMA='literal'OBJECT_NAME='literal'

  • OBJECT_SCHEMA='literal'OBJECT_NAME='%'

  • OBJECT_SCHEMA='%'OBJECT_NAME='%'

例如,对于表 db1.t1,性能模式在 TABLE 行中查找匹配 'db1''t1',然后查找 'db1''%',最后查找 '%''%'。匹配顺序很重要,因为不同的匹配 setup_objects 行可以具有不同的 ENABLEDTIMED 值。

对于表相关事件,性能模式将 setup_objects 的内容与 setup_instruments 的内容结合,以确定是否启用仪器和是否计时启用的仪器:

  • 对于匹配 setup_objects 行的表,表仪器仅在 ENABLEDsetup_instrumentssetup_objects 都是 YES 时产生事件。

  • 两个表中的 TIMED 值被组合,以便仅当两个值都是 YES 时才收集计时信息。

对于存储程序对象,性能模式从 setup_objects 行直接获取 ENABLEDTIMED 列。没有与 setup_instruments 结合值。

假设 setup_objects 包含以下适用于 db1db2db3 的 TABLE 行:

+-------------+---------------+-------------+---------+-------+
| OBJECT_TYPE | OBJECT_SCHEMA | OBJECT_NAME | ENABLED | TIMED |
+-------------+---------------+-------------+---------+-------+
| TABLE       | db1           | t1          | YES     | YES   |
| TABLE       | db1           | t2          | NO      | NO    |
| TABLE       | db2           | %           | YES     | YES   |
| TABLE       | db3           | %           | NO      | NO    |
| TABLE       | %             | %           | YES     | YES   |
+-------------+---------------+-------------+---------+-------+

如果 setup_instruments 中的对象相关仪器的 ENABLED 值为 NO,则不监控对象事件。如果 ENABLED 值为 YES,则根据相关 setup_objects 行的 ENABLED 值监控事件:

  • db1.t1 事件被监控

  • db1.t2 事件不被监控

  • db2.t3 事件被监控

  • db3.t4 事件不被监控

  • db4.t5 事件被监控

类似逻辑也适用于从 setup_instrumentssetup_objects 表中组合 TIMED 列,以确定是否收集事件计时信息。

如果一个持久表和一个临时表具有相同的名称,对 setup_objects 行的匹配方式相同,不管是持久表还是临时表。无法为一个表启用监控而不启用另一个表。然而,每个表都是单独仪器的。