该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/handlerinstrument) 和表锁定事件 ( wait/lock/table/sql/handlerinstrument)。
和列应包含文字模式或对象名称,或OBJECT_SCHEMA匹配
任何名称。
OBJECT_NAME'%'
该ENABLED列表示是否监控匹配对象,TIMED表示是否收集定时信息。设置
TIMED列会影响 Performance Schema 表内容,如
第 25.4.1 节,“Performance Schema Event Timing”中所述。
默认对象配置的效果是检测除 、 和 数据库中的对象之外的mysql所有
INFORMATION_SCHEMA对象
performance_schema。(
INFORMATION_SCHEMA无论 的内容如何,都不会检测数据库中的
表setup_objects;该行
information_schema.%只是明确显示了此默认值。)
当 Performance Schema 检查中的匹配项时
setup_objects,它会首先尝试找到更具体的匹配项。对于匹配给定的行
OBJECT_TYPE,性能模式按以下顺序检查行:
行 与 。
OBJECT_SCHEMA='literal'OBJECT_NAME='literal'行 与。
OBJECT_SCHEMA='literal'OBJECT_NAME='%'行
OBJECT_SCHEMA='%'与OBJECT_NAME='%'。
例如,对于一个表db1.t1,Performance Schema 在行中查找和TABLE的匹配项,然后是和,然后是和。匹配发生的顺序很重要,因为不同的匹配行可以有不同的
值。
'db1''t1''db1''%''%''%'setup_objectsENABLEDTIMED
对于表相关的事件,Performance Schema结合setup_objectswith
的内容setup_instruments来判断是否启用instruments以及是否对启用的instruments进行计时:
对于与 中的行匹配的表,
setup_objects只有 在和ENABLED中YES都 存在时,表工具才会产生事件。setup_instrumentssetup_objects两个表中的
TIMED值合并在一起,因此仅当两个值都为 时才收集时序信息YES。
对于存储的程序对象,性能模式
直接从行中获取ENABLED和列
。没有值与 的组合
。
TIMEDsetup_objectssetup_instruments
假设包含适用于
、和
setup_objects的以下行:
TABLEdb1db2db3
+-------------+---------------+-------------+---------+-------+
| 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 |
+-------------+---------------+-------------+---------+-------+
如果与对象相关的工具 in
setup_instruments的
ENABLED值为NO,则不会监视该对象的事件。如果
ENABLED值为,则根据相关
行
中YES的值进行事件监听
:ENABLEDsetup_objects
db1.t1事件被监控db1.t2事件不受监控db2.t3事件被监控db3.t4事件不受监控db4.t5事件被监控
类似的逻辑适用于组合
和表中的TIMED
列以确定是否收集事件计时信息。
setup_instrumentssetup_objects
如果持久表和临时表具有相同的名称,则两者对行的匹配setup_objects方式相同。不可能只对一个表启用监视而对另一个表不启用监视。但是,每个表都是单独检测的。