MySQL схема производительности: почему время события оператора больше, чем время события транзакции? - PullRequest
0 голосов
/ 17 марта 2020

Я хочу использовать performance_schema для сравнения некоторых запросов.

Я запускаю пример запроса, чтобы посмотреть, как все работает:

select count(ID) from Users where birthYear between 1980 and 2000;

Автокоммит включен , Поэтому я ожидаю, что когда я выполняю запрос выше на клиенте, он включается в транзакцию и выполняется на сервере как таковой.

Глядя на performance_schema,

select THREAD_ID, EVENT_ID, TRUNCATE(TIMER_WAIT/1000000, 6) as `Duration (us)`, SQL_TEXT
from performance_schema.events_statements_history_long
where SQL_TEXT like 'select count(ID)%';

Я получаю

# THREAD_ID, EVENT_ID, Duration (us), SQL_TEXT
86, **7718**, 7821.798000, select count(ID) from Users where birthYear between 1980 and 2000;

Длительность (TIMER_WAIT): 7821,789 us.

Глядя на транзакцию, которая охватывает это утверждение,

select TRUNCATE(TIMER_WAIT/1000000000, 6) as `Duration (s)`
from performance_schema.events_transactions_history
where NESTING_EVENT_ID = 7718;

Я получаю

# THREAD_ID, EVENT_ID, Duration (us), NESTING_EVENT_TYPE, NESTING_EVENT_ID
86, 7726, 7689.138000, STATEMENT, **7718**

Продолжительность (TIMER_WAIT) составляет 7689,138 мкс.

Почему продолжительность транзакции меньше продолжительности выписки? Поскольку транзакция оборачивает выполнение оператора, для его завершения требуется больше, не так ли?

...