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