该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
instrument) 和表锁定事件 ( wait/lock/table/sql/handler
instrument)。
和列应包含文字模式或对象名称,或OBJECT_SCHEMA
匹配
任何名称。
OBJECT_NAME
'%'
该ENABLED
列表示是否监控匹配对象,TIMED
表示是否收集定时信息。设置
TIMED
列会影响 Performance Schema 表内容,如
第 27.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_objects
ENABLED
TIMED
对于表相关的事件,Performance Schema结合setup_objects
with
的内容setup_instruments
来判断是否启用instruments以及是否对启用的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 |
+-------------+---------------+-------------+---------+-------+
如果与对象相关的工具 in
setup_instruments
的
ENABLED
值为NO
,则不会监视该对象的事件。如果
ENABLED
值为,则根据相关
行
中YES
的值进行事件监听
:ENABLED
setup_objects
db1.t1
事件被监控db1.t2
事件不受监控db2.t3
事件被监控db3.t4
事件不受监控db4.t5
事件被监控
类似的逻辑适用于组合
和表中的TIMED
列以确定是否收集事件计时信息。
setup_instruments
setup_objects
如果持久表和临时表具有相同的名称,则两者对行的匹配setup_objects
方式相同。不可能只对一个表启用监视而对另一个表不启用监视。但是,每个表都是单独检测的。