5.5按对象预过滤

setup_objects表控制性能模式是否监视特定的表和存储的程序对象。最初的setup_objects内容如下所示:

SELECT * FROM performance_schema.setup_objects;+-------------+--------------------+-------------+---------+-------+ | OBJECT_TYPE | OBJECT_SCHEMA | OBJECT_NAME | |定时启用  | +-------------+--------------------+-------------+---------+-------+ | mysql事件| | % |没有| | | |事件performance_schema | % |没有| | | |事件information_schema | % |没有| | |事件  | % | % | mysql函数是的| | | | | % |没有| | | |函数performance_schema | % |没有| | | |函数information_schema | % |没有| | | | %的函数| % |是|是| | | mysql程序| % |没有| | | |过程performance_schema | % |没有| | | |过程information_schema | % |没有| | |过程  | % | % | mysql表是的| | | | | % |没有| | | |表performance_schema | % |没有| | | |表information_schema | % |没有| | |表  | % | % | 是的| | | |触发mysql | % |没有| | | |触发performance_schema | % |没有| | | |触发information_schema | % |没有| | |触发器  | % | % | 是的| |+-------------+--------------------+-------------+---------+-------+

修改setup_objects表立即影响对象监视。

OBJECT_TYPE列指示行应用到的对象的类型。表格过滤影响表I/O事件(等待/ io /表/ sql /处理程序仪器)和表锁定事件(等待/锁定/表/ sql /处理程序仪器)。

OBJECT_SCHEMAOBJECT_NAME列应该包含文字模式或对象名称,或者“%”来匹配任何名称。

启用列表示是否监控匹配对象,和定时是否收集定时信息。设置定时列影响性能架构表内容,如中所述第5.1节,“性能模式事件定时”

默认对象配置的效果是检测除控件中的对象之外的所有对象mysqlINFORMATION_SCHEMA,performance_schema数据库。(表中INFORMATION_SCHEMA数据库的内容无论如何都不是工具化的setup_objects;的行information_schema. %简单地将此默认设置为显式的。)

当性能模式检查匹配时setup_objects,它会先尝试找到更具体的匹配项。对于匹配给定的行OBJECT_TYPE, Performance Schema按以下顺序检查行:

  • OBJECT_SCHEMA = '文字OBJECT_NAME = '文字

  • OBJECT_SCHEMA = '文字OBJECT_NAME = ' % '

  • OBJECT_SCHEMA = ' % 'OBJECT_NAME = ' % '

例如,对于一个表db1.t1,查看性能架构表格行的匹配“db1”“t1”,然后“db1”“%”,然后“%”“%”.匹配发生的顺序很重要,因为不同的匹配setup_objects行可以有不同的启用定时值。

的内容组合为与表相关的事件setup_objectssetup_instruments决定是否使能仪器和是否使能仪器的时间:

  • 中的行匹配的表setup_objects时,表仪器才产生事件启用是的在这两个setup_instrumentssetup_objects

  • 定时两个表中的值被组合,因此只有当两个值都为时才会收集计时信息是的

对于存储程序对象,性能架构采用启用定时列直接从setup_objects行。没有价值的结合setup_instruments

假设setup_objects包含以下表格应用于的行db1db2,db4

+-------------+---------------+-------------+---------+-------+ | OBJECT_TYPE | OBJECT_SCHEMA | OBJECT_NAME | |定时启用  | +-------------+---------------+-------------+---------+-------+ | t1表| db1 | |是|是| | |表db1 | t2 |没有| | | db2表| | % |是的| | | |表db4 | % |没有| | |表  | % | % | 是的|是的  | +-------------+---------------+-------------+---------+-------+

如果一个对象相关的工具在setup_instruments有一个启用的价值没有,则不监视对象的事件。如果启用值是是的时,事件监控根据启用相关的价值setup_objects行:

  • db1.t1事件监控

  • db1.t2事件不受监控

  • db2.t3事件监控

  • db3.t4事件不受监控

  • db4.t5事件监控

的组合也适用类似的逻辑定时列的setup_instrumentssetup_objects表确定是否收集事件定时信息。

如果持久表和临时表具有相同的名称,则根据setup_objects对于两者,行以相同的方式发生。不可能只对一个表启用监视而不对另一个表启用监视。但是,每个表都是单独检测的。