RDS Aurora: ¿obtener la cantidad de bytes escaneados mediante una consulta?

RDS Aurora: ¿obtener la cantidad de bytes escaneados mediante una consulta?

¿Es posible obtener la cantidad de bytes leídos por una consulta en Aurora? Si no es a nivel de consulta, ¿es posible tenerlo a nivel de tabla?

He analizado información sobre el rendimiento y las tablas performance_schema, pero todas parecen tener datos solo para ROWS_SCANNED, no para la cantidad de bytes físicos. Las métricas de E/S en la información sobre el rendimiento también parecen estar en el nivel de la base de datos, no en la tabla.

Respuesta1

Para todo InnoDB, consulteSHOW STATUS LIKE 'Innodb_%';

Hay una razón por la que las métricas son globales, no a nivel de base de datos o de tabla: buffer_pool es un caché. Cada consulta depende de todas las demás consultas e interfiere con ellas. Al menos a nivel de E/S.

Dudo que "bytes escaneados" sea relevante. Parece que "filas tocadas" es más útil. Después de la E/S, acceder a una fila es la tarea más costosa al realizar una consulta.

Desafortunadamente, los valores de estado de Innodb son estadísticas agregadas, por lo que debe ejecutar una consulta en un momento tranquilo para obtener estadísticas para una sola declaración.

Haga esto antes y después de su consulta, luego tome las diferencias.

SHOW STATUS LIKE 'Innodb%read%';

Precaución: algunos cuentan filas, algunos cuentan bloques, algunos cuentan bytes.

Tenga en cuenta que cosas como "bytes leídos del disco" vendrán en múltiplos de 16 KB debido al bloqueo. No creo que nada mire los "bytes escaneados".

Describa con más detalle qué le gustaría hacer con los datos si pudiera obtenerlos. Quizás pueda darte una respuesta más centrada.

Creo que SHOW SESSION STATUS LIKE 'Handler%';es muy bueno para descifrar cuánto trabajo se realiza con una sola consulta. Y es por sesión (además de global).

Las métricas de "escritura" generalmente se refieren a tablas temporales creadas para admitir archivos SELECTs.

información relacionada