Назад | Перейти на главную страницу

RDS Aurora - получить количество байтов, просканированных запросом?

Можно ли получить количество байтов, прочитанных запросом в полярном сиянии? Если не на уровне запроса, возможно ли это на уровне таблицы ?.

Я изучил информацию о производительности и таблицы performance_schema, но все они, похоже, содержат данные только для ROWS_SCANNED, а не количество физических байтов. Показатели ввода-вывода в анализе производительности также кажутся на уровне базы данных, а не таблицы.

Для всей InnoDB см. SHOW STATUS LIKE 'Innodb_%';

Есть причина, по которой метрики являются глобальными, а не на уровне базы данных или таблицы - buffer_pool - это кеш. Каждый запрос зависит от любого другого запроса и мешает ему. По крайней мере, на уровне ввода-вывода.

Я спорю, актуально ли "просканированные байты". Похоже, что «тронутые строки» более полезны. После ввода-вывода доступ к строке - самая дорогостоящая задача при выполнении запроса.

К сожалению, значения статуса Innodb являются совокупной статистикой, поэтому вам нужно выполнить один запрос в тихое время, чтобы получить статистику для одного оператора.

Сделайте это до и после вашего запроса, а затем обратите внимание на различия.

SHOW STATUS LIKE 'Innodb%read%';

Внимание: некоторые подсчитывают строки, некоторые подсчитывают блоки, некоторые подсчитывают байты.

Имейте в виду, что такие вещи, как «байты, прочитанные с диска», будут иметь размер, кратный 16 КБ, из-за блокировки. Я не думаю, что что-то наблюдает за "просмотренными байтами".

Опишите далее, что бы вы хотели сделать с данными, если бы вы могли их получить. Возможно, я смогу дать вам более конкретный ответ.

Я нахожу это SHOW SESSION STATUS LIKE 'Handler%'; очень хорошо подходит для расшифровки того, сколько работы выполняется для одного запроса. И это за сеанс (а также глобально).

Метрики «записи» обычно относятся к временным таблицам, созданным для поддержки сложных SELECTs.