As of MySQL 5.6.3, the Performance Schema instruments stages,
which are steps during the statement-execution process, such as
parsing a statement, opening a table, or performing a
filesort operation. Stages correspond to the
thread states displayed by SHOW
PROCESSLIST or that are visible in the
INFORMATION_SCHEMA.PROCESSLIST
table. Stages begin and end when state values change.
Within the event hierarchy, wait events nest within stage events, which nest within statement events.
These tables store stage events:
events_stages_current: Current
stage events
events_stages_history: The most
recent stage events for each thread
events_stages_history_long: The
most recent stage events overall
The following sections describe those tables. There are also summary tables that aggregate information about stage events; see Section 22.10.9.2, “Stage Summary Tables”.
To enable collection of stage events, enable the relevant instruments and consumers.
The setup_instruments table
contains instruments with names that begin with
stage. These instruments are disabled by
default. For example:
mysql> SELECT * FROM setup_instruments WHERE NAME RLIKE 'stage/sql/[a-c]';
+----------------------------------------------------+---------+-------+
| NAME | ENABLED | TIMED |
+----------------------------------------------------+---------+-------+
| stage/sql/After create | NO | NO |
| stage/sql/allocating local table | NO | NO |
| stage/sql/altering table | NO | NO |
| stage/sql/committing alter table to storage engine | NO | NO |
| stage/sql/Changing master | NO | NO |
| stage/sql/Checking master version | NO | NO |
| stage/sql/checking permissions | NO | NO |
| stage/sql/checking privileges on cached query | NO | NO |
| stage/sql/checking query cache for query | NO | NO |
| stage/sql/cleaning up | NO | NO |
| stage/sql/closing tables | NO | NO |
| stage/sql/Connecting to master | NO | NO |
| stage/sql/converting HEAP to MyISAM | NO | NO |
| stage/sql/Copying to group table | NO | NO |
| stage/sql/Copying to tmp table | NO | NO |
| stage/sql/copy to tmp table | NO | NO |
| stage/sql/Creating delayed handler | NO | NO |
| stage/sql/Creating sort index | NO | NO |
| stage/sql/creating table | NO | NO |
| stage/sql/Creating tmp table | NO | NO |
+----------------------------------------------------+---------+-------+
To modify collection of stage events, change the
ENABLED and TIMING columns
of the relevant instruments. For example:
mysql>UPDATE setup_instruments SET ENABLED = 'YES', TIMED = 'YES'WHERE NAME = 'stage/sql/altering table';
The setup_consumers table contains
consumer values with names corresponding to the current and
recent stage event table names. These consumers may be used to
filter collection of stage events. The stage consumers are
disabled by default:
mysql> SELECT * FROM setup_consumers WHERE NAME LIKE '%stages%';
+----------------------------+---------+
| NAME | ENABLED |
+----------------------------+---------+
| events_stages_current | NO |
| events_stages_history | NO |
| events_stages_history_long | NO |
+----------------------------+---------+
To enable all stage consumers, do this:
mysql>UPDATE setup_consumers SET ENABLED = 'YES'WHERE NAME LIKE '%stages%';
The setup_timers table contains a
row with a NAME value of
stage that indicates the unit for stage event
timing. The default unit is NANOSECOND.
mysql> SELECT * FROM setup_timers WHERE NAME = 'stage';
+-------+------------+
| NAME | TIMER_NAME |
+-------+------------+
| stage | NANOSECOND |
+-------+------------+
To change the timing unit, modify the
TIMER_NAME value:
mysql>UPDATE setup_timers SET TIMER_NAME = 'MICROSECOND'WHERE NAME = 'stage';
For additional information about configuring event collection, see Section 22.3, “Performance Schema Runtime Configuration”.