• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 按对象进行预过滤

    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仪器)和表锁定事件(wait/lock/table/sql/handler仪器)。

    OBJECT_SCHEMAOBJECT_NAME列应包含文本模式或对象的名称,或'%'以匹配任何名称。

    ENABLED列指示是否监视匹配的对象,并TIMED指示是否收集定时信息。设置TIMED列会影响性能模式表的内容,如“性能模式事件计时”中所述。

    缺省对象配置的效果是仪器除了那些在所有对象mysqlINFORMATION_SCHEMAperformance_schema数据库。(INFORMATION_SCHEMA不考虑数据库中的表的内容,无论的内容如何setup_objects;该行information_schema.%仅使该默认值明确。)

    当“性能模式”在中检查匹配项时setup_objects,它将尝试首先查找更具体的匹配项。对于与给定匹配的行,OBJECT_TYPE性能模式将按以下顺序检查行:

    • 与和排。OBJECT_SCHEMA='literal'OBJECT_box-sizing:inherit;margin:0px;padding:0px;border:0px;outline:0px;font-size:13.5432px;vertical-align:baseline;background:transparent;">literal'
    • 与和排。OBJECT_SCHEMA='literal'OBJECT_
    • OBJECT_SCHEMA='%'和排OBJECT_

    例如,对于一个表db1.t1,性能模式TABLE在行中查找与'db1'和的匹配项't1',然后为'db1''%',然后为'%''%'。匹配发生的顺序很重要,因为不同的匹配setup_objects行可以具有不同的ENABLEDTIMED值。

    对于表相关的事件,性能模式结合的内容setup_objectssetup_instruments以确定是否启用仪器以及是否同时启用仪器:

    • 对于匹配一排桌子setup_objects,桌子仪器产生的事件仅ENABLEDYES在这两个setup_instrumentssetup_objects
    • TIMED两个表中的值组合在一起,以便仅在两个值均为时才收集计时信息YES

    对于存储的程序对象,性能模式直接从行中获取ENABLEDTIMEDsetup_objects。的值没有组合setup_instruments

    假设setup_objects包含以下TABLE适用于行db1db2以及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	|
    +-------------	+---------------	+-------------	+---------	+-------	+
    

    如果中与对象有关的仪器setup_instrumentsENABLED值为NO,则不会监视该对象的事件。如果ENABLED值为,则YES根据ENABLED相关setup_objects行中的值进行事件监视:

    • db1.t1监控事件
    • db1.t2事件不受监控
    • db2.t3监控事件
    • db3.t4事件不受监控
    • db4.t5监控事件

    类似的逻辑适用于组合和表中的TIMED列,以确定是否收集事件计时信息。setup_instrumentssetup_objects

    如果永久表和临时表具有相同的名称,则对setup_objects行的匹配将以相同的方式进行。无法对一个表启用监视,而对另一表则无法启用。但是,每个表都是单独检测的。