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

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

Можно ли получить количество байт, прочитанных запросом в 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.

Связанный контент