Fast replay con Query Performance

Te contamos como filtrar un gran número de Queries y localizar solo aquellas en las que cambia el plan de ejecución gracias a Fast Replay.

Vamos a presentaros una interesante funcionalidad de nuestra herramienta de análisis y comparación de Queries en Oracle. Una funcionalidad que ahorra tiempo y esfuerzo cuando necesitamos analizar cual será el comportamiento de un número elevado de Queries. Como por ejemplo, en una migración o upgrade de base de datos.

Fast replay Report

Escenario:

Tenemos una migración o un upgrade de base de datos. Necesitamos reducir riesgos de rendimiento y evitar cualquier perdida de servicio de nuestro Oracle tras el cambio. Una de las tareas es evaluar cómo se comportarán nuestras Queries. Contamos con nuestra herramienta Query_Performance para capturar Queries y sus estadísticas y lanzarlas contra el nuevo entorno y comparar los rendimientos. El problema viene cuando no nos vale con saber cual será el comportamiento de unas pocas Queries, o no sabemos por cuales empezar… o no podemos identificar las más pesadas, o las más recurrentes. O simplemente no sabemos cuales pueden ser las más afectadas en rendimiento tras los cambios (migración, upgrade, parche…).

Propuesta:

Frente a este panorama y sabiendo que una captura y ejecución de todas las queries puede suponer un trabajo pesado y lento en si mismo por el volumen de las queries, optamos por una primera batida de menor impacto.

Esta operación se denomina Fast Replay. Con el fin de agilizar los resultados, no va a ejecutarnos las queries trayéndose todos sus datos y estadísticas de ejecución. Simplemente, de una forma muy rápida nos mostrara aquellas Queries en las que el “plan de ejecución” varíe.

Podremos generar un informe sobre el Fast Replay. En él se muestra de una forma rápida cuales son las Queries que Oracle estima cambian su plan de ejecución. De esta forma, podemos centrar nuestro siguiente estudio solo en estas queries.

De este modo, tendremos un conjunto de Queries cuyo plan cambia. Con él realizaremos un “Replay” completo para obtener y comparar todas las métricas que nos ofrece Oracle para esta selección de Queries.

Ejemplo de captura Snapshot Difference con Fast Replay

Veamos como lo hace la Aplicación con un ejemplo de captura denominado Snapshot Difference.

Se trata de capturar del “entorno actual” (producción) el mayor número de Queries. Una vez capturadas lanzarlas contra el “nuevo entorno” (test o desarrollo donde vamos ver el comportamiento que tendrán estas queries) este set de gran número de queries. Estas queries en el ejemplo que os mostramos se han guardado en un snapshot llamado «test capture 11g» y tiene 901 queries que queremos revisar.

El ejecutar este número de queries en nuestro entorno de pruebas puede ser un problema. Puede cargarlo o alargarse mucho en el tiempo. Por lo que para realizar un primer filtro utilizamos la opción de fast replay. En la que solo vamos a comprobar el plan de ejecución de las consultas capturadas. Para ello ejecutamos el proceso de replay con las siguientes opciones:

Este proceso es mucho más rápido y nos permitirá saber los planes de ejecución en el nuevo entorno. También nos informará si la query se ejecuta o genera errores. Al final del proceso tendremos dos snapshots con la información que necesitamos:

Si queremos centrarnos exclusivamente en las queries cuyo plan cambia con el upgrade de versión utilizamos el tipo de captura llamada “Snapshot difference”. Para ello, simplemente seleccionamos los dos snapshots anteriores y el criterio para filtrar. En este caso todas las queries del snapshot ejecutado con fast replay y cuyos planes son distintos de la captura en 11:

fast replay
fast replay

La opción seleccionada es:

Al terminar este proceso hemos generado un nuevo snapshot con 54 queries sobre las que enfocar nuestro estudio. Con él hemos descartado un gran número de queries y nos ayudará a centrar nuestros esfuerzos sobre las que puede tener un cambio en el comportamiento:

Comments are closed.