setup_objects 表控制性能模式是否监控特定对象。此表默认最大大小为 100 行。要更改表大小,请在服务器启动时修改 performance_schema_setup_objects_size 系统变量。
初始 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 表的修改会立即影响对象监控。
对于 setup_objects 中列出的对象类型,性能模式使用该表来确定如何监控它们。对象匹配基于 OBJECT_SCHEMA 和 OBJECT_NAME 列。不监控没有匹配项的对象。
默认对象配置的效果是检测所有表,但 mysql、INFORMATION_SCHEMA 和 performance_schema 数据库中的表除外。(无论 setup_objects 的内容如何,都不会检测 INFORMATION_SCHEMA 数据库中的表;information_schema.% 的行只是明确了此默认设置。)
当性能模式在 setup_objects 中检查匹配项时,它会尝试首先找到更具体的匹配项。例如,对于表 db1.t1,它会查找 'db1' 和 't1' 的匹配项,然后是 'db1' 和 '%',最后是 '%' 和 '%'。匹配发生的顺序很重要,因为不同的匹配 setup_objects 行可能具有不同的 ENABLED 和 TIMED 值。
具有对该表的 INSERT 或 DELETE 权限的用户可以将行插入或删除 setup_objects。对于现有行,只有具有对该表的 UPDATE 权限的用户才能修改 ENABLED 和 TIMED 列。
有关 setup_objects 表在事件过滤中的作用的更多信息,请参见 第 29.4.3 节,“事件预过滤”。
setup_objects 表包含以下列:
OBJECT_TYPE要检测的对象类型。值为
'EVENT'(事件调度器事件)、'FUNCTION'(存储函数)、'PROCEDURE'(存储过程)、'TABLE'(基表)或'TRIGGER'(触发器)之一。TABLE过滤会影响表 I/O 事件(wait/io/table/sql/handlerInstrument)和表锁事件(wait/lock/table/sql/handlerInstrument)。OBJECT_SCHEMA包含对象的模式。这应该是文字名称,或者使用
'%'表示“任何模式”。OBJECT_NAME检测对象的名称。这应该是文字名称,或者使用
'%'表示“任何对象”。ENABLED是否检测对象的事件。值为
YES或NO。此列可以修改。TIMED对象的事件是否计时。此列可以修改。
setup_objects 表具有以下索引:
索引位于 (
OBJECT_TYPE,OBJECT_SCHEMA,OBJECT_NAME)
TRUNCATE TABLE 允许用于 setup_objects 表。它会删除行。