Thesetup_objects
table controls whether the Performance Schema monitors particular table and stored program objects. The initialsetup_objects
contents look like this:
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
table affect object monitoring immediately.
TheOBJECT_TYPE
column indicates the type of object to which a row applies.TABLE
filtering affects table I/O events (wait/io/table/sql/handler
instrument) and table lock events (wait/lock/table/sql/handler
instrument).
TheOBJECT_SCHEMA
andOBJECT_NAME
columns should contain a literal schema or object name, or'%'
to match any name.
TheENABLED
column indicates whether matching objects are monitored, andTIMED
indicates whether to collect timing information. Setting theTIMED
column affects Performance Schema table contents as described inSection 27.4.1, “Performance Schema Event Timing”.
The effect of the default object configuration is to instrument all objects except those in themysql
,INFORMATION_SCHEMA
, andperformance_schema
databases. (Tables in theINFORMATION_SCHEMA
database are not instrumented regardless of the contents ofsetup_objects
; the row forinformation_schema.%
simply makes this default explicit.)
When the Performance Schema checks for a match insetup_objects
, it tries to find more specific matches first. For rows that match a givenOBJECT_TYPE
, the Performance Schema checks rows in this order:
Rows with
OBJECT_SCHEMA='
andliteral
'OBJECT_NAME='
.literal
'Rows with
OBJECT_SCHEMA='
andliteral
'OBJECT_NAME='%'
.Rows with
OBJECT_SCHEMA='%'
andOBJECT_NAME='%'
.
For example, with a tabledb1.t1
, the Performance Schema looks inTABLE
rows for a match for'db1'
and't1'
, then for'db1'
and'%'
, then for'%'
and'%'
. The order in which matching occurs matters because different matchingsetup_objects
rows can have differentENABLED
andTIMED
values.
For table-related events, the Performance Schema combines the contents ofsetup_objects
withsetup_instruments
to determine whether to enable instruments and whether to time enabled instruments:
For tables that match a row in
setup_objects
, table instruments produce events only ifENABLED
isYES
in bothsetup_instruments
andsetup_objects
.The
TIMED
values in the two tables are combined, so that timing information is collected only when both values areYES
.
For stored program objects, the Performance Schema takes theENABLED
andTIMED
columns directly from thesetup_objects
row. There is no combining of values withsetup_instruments
.
Suppose thatsetup_objects
contains the followingTABLE
rows that apply todb1
,db2
, anddb3
:
+-------------+---------------+-------------+---------+-------+ | 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 | +-------------+---------------+-------------+---------+-------+
If an object-related instrument insetup_instruments
has anENABLED
value ofNO
, events for the object are not monitored. If theENABLED
value isYES
, event monitoring occurs according to theENABLED
value in the relevantsetup_objects
row:
db1.t1
events are monitoreddb1.t2
events are not monitoreddb2.t3
events are monitoreddb3.t4
events are not monitoreddb4.t5
events are monitored
Similar logic applies for combining theTIMED
columns from thesetup_instruments
andsetup_objects
tables to determine whether to collect event timing information.
If a persistent table and a temporary table have the same name, matching againstsetup_objects
rows occurs the same way for both. It is not possible to enable monitoring for one table but not the other. However, each table is instrumented separately.