Spec-Zone .ru
спецификации, руководства, описания, API
|
The statement summary tables aggregate information about statement events:
events_statements_summary_by_digest
:
Statement events summarized per schema and digest value
events_statements_summary_by_thread_by_event_name
:
Statement events summarized per thread and event name
events_statements_summary_global_by_event_name
:
Statement events summarized per event name
For example:
mysql> SELECT * FROM
events_statements_summary_global_by_event_name\G
*************************** 1. row *************************** EVENT_NAME: statement/sql/select COUNT_STAR: 25 SUM_TIMER_WAIT: 1535983999000 MIN_TIMER_WAIT: 209823000 AVG_TIMER_WAIT: 61439359000 MAX_TIMER_WAIT: 1363397650000 SUM_LOCK_TIME: 20186000000 SUM_ERRORS: 0 SUM_WARNINGS: 0 SUM_ROWS_AFFECTED: 0 SUM_ROWS_SENT: 388 SUM_ROWS_EXAMINED: 370SUM_CREATED_TMP_DISK_TABLES: 0 SUM_CREATED_TMP_TABLES: 0 SUM_SELECT_FULL_JOIN: 0 SUM_SELECT_FULL_RANGE_JOIN: 0 SUM_SELECT_RANGE: 0 SUM_SELECT_RANGE_CHECK: 0 SUM_SELECT_SCAN: 6 SUM_SORT_MERGE_PASSES: 0 SUM_SORT_RANGE: 0 SUM_SORT_ROWS: 0 SUM_SORT_SCAN: 0 SUM_NO_INDEX_USED: 6 SUM_NO_GOOD_INDEX_USED: 0...
TRUNCATE TABLE
is permitted for statement summary tables. For events_statements_summary_by_digest
, it empties the table. For the other
statement summary tables, it resets the counters to zero rather than removing rows.
The statement summary tables have these grouping columns to indicate how events are aggregated:
events_statements_summary_by_digest
has SCHEMA_NAME
and DIGEST
column. Each row
summarizes events for given schema/digest values. (The DIGEST_TEXT
column
contains the corresponding normalized statement digest text, but is neither a grouping nor summary
column.)
Before MySQL 5.6.9, there is no SCHEMA_NAME
column and grouping is
based on DIGEST
values only.
events_statements_summary_global_by_event_name
has an EVENT_NAME
column. Each row summarizes events for a given
instrument.
events_statements_summary_by_thread_by_event_name
has THREAD_ID
and EVENT_NAME
columns. Each row
summarizes events for a given thread instrument instance.
The statement summary tables have these summary columns containing aggregated values:
COUNT_STAR
, SUM_TIMER_WAIT
,
MIN_TIMER_WAIT
, AVG_TIMER_WAIT
, MAX_TIMER_WAIT
These columns are analogous to the columns of the same names in the events_waits_summary_global_by_event_name
and events_waits_summary_by_thread_by_event_name
tables, except that the
statement summary tables aggregate waits from events_statements_current
rather than events_waits_current
.
SUM_
xxx
The aggregate of the corresponding xxx
column in the events_statements_current
table. For example, the SUM_LOCK_TIME
and SUM_ERRORS
columns in statement summary tables are the aggregates of the LOCK_TIME
and ERRORS
columns in events_statements_current
table.
The events_statements_summary_by_digest
table has these additional summary columns:
FIRST_SEEN_TIMESTAMP
, LAST_SEEN_TIMESTAMP
The times at which a statement with the given digest value were first seen and most recently seen.
These tables were added in MySQL 5.6.3, except that events_statements_summary_by_digest
was added in 5.6.5.
If the statement_digest
consumer is enabled, aggregation into events_statements_summary_by_digest
occurs as follows when a statement completes.
Aggregation is based on the DIGEST
value computed for the statement.
If a events_statements_summary_by_digest
row already exists with the digest value for the statement that just completed, statistics for the
statement are aggregated to that row. The LAST_SEEN
column is updated to
the current time.
If no row has the digest value for the statement that just completed, and the table
is not full, a new row is created for the statement. The FIRST_SEEN
and
LAST_SEEN
columns are initialized with the current time.
If no row has the statement digest value for the statement that just completed, and
the table is full, the statistics for the statement that just completed are added to a special "catch-all" row with DIGEST
= NULL
, which is created if necessary. If the row is created, the FIRST_SEEN
and LAST_SEEN
columns are
initialized with the current time. Otherwise, the LAST_SEEN
column is
updated with the current time.
The row with DIGEST
= NULL
is maintained because
Performance Schema tables have a maximum size due to memory constraints. The DIGEST
= NULL
row permits digests that do not match other rows to be counted even if the
summary table is full, using a common "other" bucket. This
row helps you estimate whether the digest summary is representative:
A DIGEST
= NULL
row that
has a COUNT_STAR
value that represents 5% of all digests shows that the
digest summary table is very representative; the other rows cover 95% of the statements seen.
A DIGEST
= NULL
row that
has a COUNT_STAR
value that represents 50% of all digests shows that the
digest summary table is not very representative; the other rows cover only half the statements seen.
Most likely the DBA should increase the maximum table size so that more of the rows counted in the DIGEST
= NULL
row would be counted using
more specific rows instead. To do this, set the performance_schema_digests_size
system variable to a larger value at
server startup. The default size is 200.