29.12.20.3 Таблицы сводных данных о заявлениях
Схема Performance Schema поддерживает таблицы для сбора текущих и недавних событий заявлений и агрегирует эту информацию в сводных таблицах. Раздел 29.12.6, «Таблицы событий заявлений Performance Schema» описывает события, на основе которых строятся сводные данные о заявлениях. См. это обсуждение для получения информации о содержимом событий заявлений, текущих и исторических таблицах событий заявлений и о том, как управлять сбором событий заявлений, который по умолчанию частично отключен.
Пример сводной информации о событиях заявлений:
mysql> SELECT *
FROM performance_schema.events_statements_summary_global_by_event_name\G
*************************** 1. row ***************************
EVENT_NAME: statement/sql/select
COUNT_STAR: 54
SUM_TIMER_WAIT: 38860400000
MIN_TIMER_WAIT: 52400000
AVG_TIMER_WAIT: 719600000
MAX_TIMER_WAIT: 12631800000
SUM_LOCK_TIME: 88000000
SUM_ERRORS: 0
SUM_WARNINGS: 0
SUM_ROWS_AFFECTED: 0
SUM_ROWS_SENT: 60
SUM_ROWS_EXAMINED: 120
SUM_CREATED_TMP_DISK_TABLES: 0
SUM_CREATED_TMP_TABLES: 21
SUM_SELECT_FULL_JOIN: 16
SUM_SELECT_FULL_RANGE_JOIN: 0
SUM_SELECT_RANGE: 0
SUM_SELECT_RANGE_CHECK: 0
SUM_SELECT_SCAN: 41
SUM_SORT_MERGE_PASSES: 0
SUM_SORT_RANGE: 0
SUM_SORT_ROWS: 0
SUM_SORT_SCAN: 0
SUM_NO_INDEX_USED: 22
SUM_NO_GOOD_INDEX_USED: 0
SUM_CPU_TIME: 0
MAX_CONTROLLED_MEMORY: 2028360
MAX_TOTAL_MEMORY: 2853429
COUNT_SECONDARY: 0
...
Каждая таблица сводных данных о заявлениях имеет один или несколько группирующих столбцов, чтобы указать, как таблица агрегирует события. Имена событий относятся к именам инструментов событий в таблице setup_instruments:
Таблица
events_statements_summary_by_account_by_event_nameсодержит столбцыEVENT_NAME,USERиHOST. Каждая строка обобщает события для заданного аккаунта (комбинации пользователя и хоста) и имени события.-
Таблица
events_statements_summary_by_digestсодержит столбцыSCHEMA_NAMEиDIGEST. Каждая строка обобщает события по схеме и значению дайджеста. (СтолбецDIGEST_TEXTсодержит соответствующий нормализованный текст дайджеста заявления, но не является ни группирующим, ни сводным столбцом. СтолбцыQUERY_SAMPLE_TEXT,QUERY_SAMPLE_SEENиQUERY_SAMPLE_TIMER_WAITтакже не являются группирующими или сводными столбцами; они поддерживают выборку заявлений.)Максимальное количество строк в таблице автоматически настраивается при запуске сервера. Чтобы явно установить это максимальное значение, установите системную переменную
performance_schema_digests_sizeпри запуске сервера. Таблица
events_statements_summary_by_host_by_event_nameсодержит столбцыEVENT_NAMEиHOST. Каждая строка обобщает события для данного хоста и имени события.Таблица
events_statements_summary_by_programсодержит столбцыOBJECT_TYPE,OBJECT_SCHEMAиOBJECT_NAME. Каждая строка обобщает события для данного хранимого программного объекта (хранимой процедуры или функции, триггера или события).Таблица
events_statements_summary_by_thread_by_event_nameсодержит столбцыTHREAD_IDиEVENT_NAME. Каждая строка обобщает события для данного потока и имени события.Таблица
events_statements_summary_by_user_by_event_nameсодержит столбцыEVENT_NAMEиUSER. Каждая строка обобщает события для данного пользователя и имени события.Таблица
events_statements_summary_global_by_event_nameсодержит столбецEVENT_NAME. Каждая строка обобщает события для данного имени события.Таблица
prepared_statements_instancesсодержит столбецOBJECT_INSTANCE_BEGIN. Каждая строка обобщает события для данного подготовленного заявления.
Каждая таблица сводных данных о заявлениях имеет следующие сводные столбцы, содержащие агрегированные значения (с исключениями, как указано):
-
COUNT_STAR,SUM_TIMER_WAIT,MIN_TIMER_WAIT,AVG_TIMER_WAIT,MAX_TIMER_WAITЭти столбцы аналогичны столбцам с такими же именами в таблицах сводных данных по событиям ожидания (см. Раздел 29.12.20.1, «Таблицы сводных данных по событиям ожидания»), за исключением того, что таблицы сводных данных о заявлениях агрегируют события из таблицы
events_statements_current, а не из таблицыevents_waits_current.В таблице
prepared_statements_instancesэти столбцы отсутствуют. -
SUM_xxxАгрегированное значение соответствующего столбца
xxxв таблицеevents_statements_current. Например, столбцыSUM_LOCK_TIMEиSUM_ERRORSв таблицах сводных данных о заявлениях являются агрегатами столбцовLOCK_TIMEиERRORSв таблицеevents_statements_current. -
MAX_CONTROLLED_MEMORYСообщает максимальный объем используемой памяти, управляемой заявлением во время выполнения.
-
MAX_TOTAL_MEMORYСообщает максимальный объем памяти, используемой заявлением во время выполнения.
-
COUNT_SECONDARYКоличество раз, когда запрос обрабатывался на движке
SECONDARY. Используется с HeatWave Service и HeatWave, где движокPRIMARYявляетсяInnoDB, а движокSECONDARY— HeatWave (RAPID). Для MySQL Community Edition Server, MySQL Enterprise Edition Server (on-premise) и HeatWave Service без HeatWave запросы всегда обрабатываются на движкеPRIMARY, что означает, что значение всегда равно 0 на этих серверах MySQL.
Таблица events_statements_summary_by_digest содержит следующие дополнительные сводные столбцы:
-
FIRST_SEEN,LAST_SEENОтметки времени, показывающие, когда заявления с заданным значением дайджеста были впервые обнаружены и в последний раз.
-
QUANTILE_95: 95-й процентиль задержки заявления в пикосекундах. Этот процентиль является высокой оценкой, вычисленной из данных гистограммы, собранных. Другими словами, для данного дайджеста 95% измеренных заявлений имеют задержку меньше, чемQUANTILE_95.Для доступа к данным гистограммы используйте таблицы, описанные в Раздел 29.12.20.4, «Таблицы сводных данных гистограмм заявлений».
QUANTILE_99: АналогичноQUANTILE_95, но для 99-го процентиля.QUANTILE_999: АналогичноQUANTILE_95, но для 99,9-го процентиля.
Таблица events_statements_summary_by_digest содержит следующие столбцы. Они не являются группирующими или сводными столбцами; они поддерживают выборку заявлений:
-
QUERY_SAMPLE_TEXTОбразец SQL-заявления, которое создаёт значение дайджеста в строке. Этот столбец позволяет приложениям получить доступ к фактическому заявлению, увиденному сервером, которое создаёт данный дайджест. Одно из применений — запуск
EXPLAINдля заявления, чтобы изучить план выполнения для представительного заявления, связанного с часто встречающимся дайджестом.Когда столбцу
QUERY_SAMPLE_TEXTприсваивается значение, столбцамQUERY_SAMPLE_SEENиQUERY_SAMPLE_TIMER_WAITтакже присваиваются значения.Максимальное пространство, доступное для отображения заявления, по умолчанию составляет 1024 байта. Чтобы изменить это значение, установите системную переменную
performance_schema_max_sql_text_lengthпри запуске сервера. (Изменение этого значения также влияет на столбцы в других таблицах Performance Schema. См. Раздел 29.10, «Дайджесты и выборка заявлений Performance Schema».)Сведения о выборке заявлений см. в Разделе 29.10, «Дайджесты и выборка заявлений Performance Schema».
-
QUERY_SAMPLE_SEENОтметка времени, показывающая, когда было видно заявление в столбце
QUERY_SAMPLE_TEXT. -
QUERY_SAMPLE_TIMER_WAITВремя ожидания для образца заявления в столбце
QUERY_SAMPLE_TEXT.
Таблица events_statements_summary_by_program содержит эти дополнительные сводные столбцы:
-
COUNT_STATEMENTS,SUM_STATEMENTS_WAIT,MIN_STATEMENTS_WAIT,AVG_STATEMENTS_WAIT,MAX_STATEMENTS_WAITСтатистические данные о вложенных заявлениях, вызванных во время выполнения хранимой программы.
Таблица prepared_statements_instances содержит следующие дополнительные сводные столбцы:
-
COUNT_EXECUTE,SUM_TIMER_EXECUTE,MIN_TIMER_EXECUTE,AVG_TIMER_EXECUTE,MAX_TIMER_EXECUTEАгрегированная статистика для выполнений подготовленного заявления.
Таблицы сводных данных о заявлениях имеют следующие индексы:
-
events_transactions_summary_by_account_by_event_name:Первичный ключ по (
USER,HOST,EVENT_NAME)
-
events_statements_summary_by_digest:Первичный ключ по (
SCHEMA_NAME,DIGEST)
-
events_transactions_summary_by_host_by_event_name:Первичный ключ по (
HOST,EVENT_NAME)
-
events_statements_summary_by_program:Первичный ключ по (
OBJECT_TYPE,OBJECT_SCHEMA,OBJECT_NAME)
-
events_statements_summary_by_thread_by_event_name:Первичный ключ по (
THREAD_ID,EVENT_NAME)
-
events_transactions_summary_by_user_by_event_name:Первичный ключ по (
USER,EVENT_NAME)
-
events_statements_summary_global_by_event_name:Первичный ключ по (
EVENT_NAME)
TRUNCATE TABLE разрешена для сводных таблиц операторов. Она имеет такие эффекты:
Для
events_statements_summary_by_digestона удаляет строки.Для других сводных таблиц, не агрегированных по учетной записи, хосту или пользователю, обнуление сводных столбцов устанавливает их в ноль, а не удаляет строки.
Для других сводных таблиц, агрегированных по учетной записи, хосту или пользователю, обнуление удаляет строки для учетных записей, хостов или пользователей без подключений и обнуляет сводные столбцы для оставшихся строк.
Кроме того, каждая сводная таблица операторов, агрегированная по учетной записи, хосту, пользователю или потоку, неявно обнуляется обнулением таблицы подключений, от которой она зависит, или обнулением events_statements_summary_global_by_event_name. Подробности см. в Разделе 29.12.8, «Таблицы подключений Performance Schema».
Кроме того, обнуление events_statements_summary_by_digest неявно обнуляет events_statements_histogram_by_digest, а обнуление events_statements_summary_global_by_event_name неявно обнуляет events_statements_histogram_global.
Правила агрегации отчётов операторов
Если потребитель statements_digest включён, агрегация в events_statements_summary_by_digest происходит следующим образом при завершении оператора. Агрегация основана на значении DIGEST, вычисленном для оператора.
Если строка
events_statements_summary_by_digestуже существует со значением дайджеста для только что завершённого оператора, статистика оператора агрегируется в эту строку. СтолбецLAST_SEENобновляется текущим временем.Если ни одна строка не имеет значения дайджеста для только что завершённого оператора и таблица не заполнена, создаётся новая строка для оператора. Столбцы
FIRST_SEENиLAST_SEENинициализируются текущим временем.Если ни одна строка не имеет значения дайджеста оператора для только что завершённого оператора и таблица заполнена, статистика только что завершённого оператора добавляется к специальной строке “всеобъемлющей” с
DIGEST=NULL, которая создаётся при необходимости. Если строка создана, столбцыFIRST_SEENиLAST_SEENинициализируются текущим временем. В противном случае, столбецLAST_SEENобновляется текущим временем.
Строка с DIGEST = NULL сохраняется, потому что таблицы Performance Schema имеют максимальный размер из-за ограничений памяти. Строка DIGEST = NULL позволяет подсчитывать дайджесты, которые не соответствуют другим строкам, даже если сводная таблица заполнена, используя общий “другой” контейнер. Эта строка помогает оценить, насколько представительна сводная таблица дайджестов:
Строка
DIGEST=NULL, имеющая значениеCOUNT_STAR, которое представляет 5% всех дайджестов, показывает, что сводная таблица дайджестов очень представительна; другие строки охватывают 95% увиденных операторов.Строка
DIGEST=NULL, имеющая значениеCOUNT_STAR, которое представляет 50% всех дайджестов, показывает, что сводная таблица дайджестов не очень представительна; другие строки охватывают только половину увиденных операторов. Вероятно, администратору базы данных следует увеличить максимальный размер таблицы, чтобы больше строк, подсчитанных в строкеDIGEST=NULL, было учтено с помощью более конкретных строк вместо этого. По умолчанию таблица автоматически масштабируется, но если этот размер слишком мал, установите системную переменнуюperformance_schema_digests_sizeна большее значение при запуске сервера.
Поведение инструментации хранимых процедур
Для типов хранимых процедур, для которых включена инструментация в таблице setup_objects, events_statements_summary_by_program сохраняет статистику для хранимых процедур следующим образом:
Строка добавляется для объекта, когда он используется в сервере впервые.
Строка для объекта удаляется, когда объект удаляется.
Статистика агрегируется в строке для объекта по мере его выполнения.
См. также Раздел 29.4.3, «Предварительная фильтрация событий».
© 2025 Oracle
Licensed under the GPLv2 License.