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_SCHEMA与 OBJECT_NAME列应包含文本模式或对象的名称,或'%'以匹配任何名称。
该ENABLED列指示是否监视匹配的对象,并TIMED指示是否收集定时信息。设置 TIMED列会影响性能模式表的内容,如 第26.4.1节“性能模式事件计时”中所述。
缺省对象配置的效果是仪器除了那些在所有对象mysql, INFORMATION_SCHEMA和 performance_schema数据库。(INFORMATION_SCHEMA不考虑数据库中的表, 无论的内容如何 setup_objects; for的行 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行可以具有不同的ENABLED和 TIMED值。
对于表相关的事件,性能模式结合的内容setup_objects与 setup_instruments以确定是否启用仪器以及是否同时启用仪器:
对于匹配一排桌子 setup_objects,桌子仪器产生的事件仅 ENABLED是YES在这两个 setup_instruments和 setup_objects。
将TIMED两个表中的值组合在一起,以便仅在两个值均为时才收集计时信息YES。
对于存储的程序对象,性能模式直接从 行中获取 ENABLED和TIMED列setup_objects。的值没有组合 setup_instruments。
假设setup_objects包含以下TABLE适用于行 db1,db2以及 db3:
+-------------+---------------+-------------+---------+-------+
| 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根据ENABLED相关setup_objects行中的值进行 事件监视 :
db1.t1 监控事件
db1.t2 事件不受监控
db2.t3 监控事件
db3.t4 事件不受监控
db4.t5 监控事件
类似的逻辑适用于组合 和表中的TIMED 列,以确定是否收集事件计时信息。 setup_instrumentssetup_objects
如果永久表和临时表具有相同的名称,则对setup_objects行的匹配将以相同的方式进行。无法对一个表启用监视,而对另一表则无法启用。但是,每个表都是单独检测的。