Skip to content

¿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:

  1. Qué tablas intervienen en la consulta
  2. Cuántos JOINs están involucrados
  3. Cuánta información está estimada para el resultado
  4. Cuáles índices pueden ser utilizados de las estructuras
  5. Qué algoritmos se requieren para consolidar los datos
  6. 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.

plan-cache-de-sql-server

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.

www.datoptim.com
I love working on SQL Server Performance Tuning and finding the origin of the problems. Music and SQL Server passionate.

Carrito
Volver arriba