Lo primero para empezar el trabajo con SQL Server es preparar el ambiente. La instalación…
¿Qué es el Plan Cache de SQL Server?
Toda la ingeniería que hace nuestro motor de base de datos con aquello que le solicitamos con nuestros queries, se refleja en todo el trabajo del Query Processor en su llamado Pipeline o flujo operativo. Es probable que ya sepas que en este flujo, cada query necesita construir un plan de ejecución antes de procesar los resultados. Estos planes de ejecución estarán en el Plan Cache de SQL Server. Si necesitas saber cómo mostrar un Plan de Ejecución mira el enlace oficial.
Cada ejecución que hacemos en una query debe preguntarse varias cosas para generar un plan de ejecución. Por ejemplo:
- Qué tablas intervienen en la consulta
- Cuántos JOINs están involucrados
- Cuánta información está estimada para el resultado
- Cuáles índices pueden ser utilizados de las estructuras
- Qué algoritmos se requieren para consolidar los datos
- y tantas otras
Todas estas preguntas que se hace el motor terminan creando un Plan de Ejecución individual para cada query realizado. Cuando el mismo query se ejecuta nuevamente, exactamente el mismo query, estas preguntas ya no necesitan ser respondidas ya que ese Plan de Ejecución queda almacenado en el denominado Plan Cache.
Te puedes imaginar que el tiempo que tiene SQL Server para crear un plan de ejecución es mínimo. Lo impresionante es que nuestro motor puede generar cientos de planes de ejecución para poder entregarte el mejor de todos ellos. Esta cantidad depende de qué tan gigantezca consulta estamos haciendo. (Ya pensaste en tu query mounstroso, ¿verdad?)
Ahora bien, ¿cómo revisamos lo que hay en el Plan Cache?
Lo que más me gusta de SQL Server es que podemos obtener toda la información que necesitamos desde las vistas de sistema. Estas que conocemos como DMV’s (Dynamic Management Views).
En este caso basta con que consultemos lo siguiente.
SELECT *
FROM sys.dm_exec_query_stats
El resultado puede ser similar al que vemos en la imagen.
Wow! Cada que veo este resultado quedo más impresionado. Es increíble la cantidad de información que podemos obtener. A veces incluso un poco desconcertante.
Por eso creamos el sp_ReportCache
Para ayudarte a enteder mejor estos resultados creamos una herramienta muy útil para revisar todas las ejecuciones almacenadas en el Plan Cache de SQL Server. Lo llamamos el Reporte de Cache y lo puedes obtener aquí.
La memoria es muy bondadosa para guardar información tan valiosa.
Beneficios del Plan Cache de SQL Server
- Nos permite ahorrar el tiempo de compilación de nuestras ejecuciones
- Almacena datos muy importantes para análisis de consultas
- Este almacenamiento depende de varios factores, especialmente de un análisis de memoria como te contamos en el Webinar Cómo funciona el cache en SQL Server.
- Saber cómo funciona, cómo planes de ejecución se utilizan y qué información generan, nos ayudará a diseñar aplicaciones de alta performance.