Можно ли получить количество байтов, прочитанных запросом в полярном сиянии? Если не на уровне запроса, возможно ли это на уровне таблицы ?.
Я изучил информацию о производительности и таблицы performance_schema, но все они, похоже, содержат данные только для ROWS_SCANNED, а не количество физических байтов. Показатели ввода-вывода в анализе производительности также кажутся на уровне базы данных, а не таблицы.
Для всей InnoDB см. SHOW STATUS LIKE 'Innodb_%';
Есть причина, по которой метрики являются глобальными, а не на уровне базы данных или таблицы - buffer_pool - это кеш. Каждый запрос зависит от любого другого запроса и мешает ему. По крайней мере, на уровне ввода-вывода.
Я спорю, актуально ли "просканированные байты". Похоже, что «тронутые строки» более полезны. После ввода-вывода доступ к строке - самая дорогостоящая задача при выполнении запроса.
К сожалению, значения статуса Innodb являются совокупной статистикой, поэтому вам нужно выполнить один запрос в тихое время, чтобы получить статистику для одного оператора.
Сделайте это до и после вашего запроса, а затем обратите внимание на различия.
SHOW STATUS LIKE 'Innodb%read%';
Внимание: некоторые подсчитывают строки, некоторые подсчитывают блоки, некоторые подсчитывают байты.
Имейте в виду, что такие вещи, как «байты, прочитанные с диска», будут иметь размер, кратный 16 КБ, из-за блокировки. Я не думаю, что что-то наблюдает за "просмотренными байтами".
Опишите далее, что бы вы хотели сделать с данными, если бы вы могли их получить. Возможно, я смогу дать вам более конкретный ответ.
Я нахожу это SHOW SESSION STATUS LIKE 'Handler%';
очень хорошо подходит для расшифровки того, сколько работы выполняется для одного запроса. И это за сеанс (а также глобально).
Метрики «записи» обычно относятся к временным таблицам, созданным для поддержки сложных SELECTs
.