该 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
值。
用户可以对 setup_objects
插入或删除行,他们对该表具有 INSERT
或 DELETE
权限。对于现有行,只有 ENABLED
和 TIMED
列可以修改,修改者需要对该表具有 UPDATE
权限。
有关 setup_objects
表在事件过滤中的作用的更多信息,请参见 第 29.4.3 节,“事件预过滤”。
该 setup_objects
表包含以下列
OBJECT_TYPE
要检测的对象类型。该值为
'EVENT'
(事件调度程序事件)、'FUNCTION'
(存储函数)、'PROCEDURE'
(存储过程)、'TABLE'
(基本表)或'TRIGGER'
(触发器)之一。TABLE
过滤会影响表 I/O 事件(wait/io/table/sql/handler
仪器)和表锁事件(wait/lock/table/sql/handler
仪器)。OBJECT_SCHEMA
包含该对象的架构。这应该是文字名称,或
'%'
代表 “任何架构。”OBJECT_NAME
要检测对象的名称。这应该是文字名称,或
'%'
代表 “任何对象。”ENABLED
是否为对象启用事件。值为
YES
或NO
。此列可以修改。计时
是否为对象计时。此列可以修改。
该 setup_objects
表包含以下索引
基于 (
OBJECT_TYPE
,OBJECT_SCHEMA
,OBJECT_NAME
) 的索引
TRUNCATE TABLE
允许用于 setup_objects
表。它将删除行。