Я хочу использовать 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 мкс.
Почему продолжительность транзакции меньше продолжительности выписки? Поскольку транзакция оборачивает выполнение оператора, для его завершения требуется больше, не так ли?