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


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列指示一个行适用的对象类型。对setup_objects中的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数据库中的表进行监控。(INFORMATION_SCHEMA数据库中的表不论setup_objects的内容如何,都会被忽略。)

当性能模式检查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中的表行,表工具只在setup_instrumentssetup_objects中都有ENABLEDYES时才产生事件。

  • 在两个表格中TIMED值的组合会确保只有当两者都是YES时,才收集时间信息。

对于存储程序对象,性能_schema直接从setup_objects行获取ENABLEDTIMED列,没有将这些值与setup_instruments表结合使用。

假设setup_objects包含以下适用于db1db2db3TABLE行:

+-------------+---------------+-------------+---------+-------+
| 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值为NOENABLED值为YES,则根据setup_objects相关行的ENABLED值进行事件监控:

  • db1.t1事件被监控

  • db1.t2事件不被监控

  • db2.t3事件被监控

  • db3.t4事件不被监控

  • db4.t5事件被监控

对于从setup_instrumentssetup_objects表中TIMED列的组合逻辑类似,用于确定是否收集事件时间信息。

如果一个持久表和一个临时表具有相同的名称,则在setup_objects行中进行匹配的方式对于两个表都是相同的。无法为一个表启用监控而不为另一个表启用。但是,每个表都单独进行了仪器。