Parameter Sensitive Plan para SQL Server 2022
Bienvenidos/as a un nuevo post en el mejor blog de Data & AI.
En el artículo de hoy, hablaremos sobre una de las nuevas ventajas más importantes que nos ofrece SQL Server 2022.
En concreto, estamos hablando de «Parameter Sensitive Plan» o PSP, que forma parte de una nueva serie de características llamada “Intelligent Query Processing”.
¿Qué es el Parameter Sensitive Plan?
Parameter Sensitive Plan es la nueva funcionalidad de SQL Server 2022 se ha convertido en una de las más utilizadas en el mundo del dato ya que es de muy fácil manejo y comprensión. En el artículo de hoy, os enseñamos paso a paso cuál es su funcionamiento.
Paso 1: Activación de las estadísticas de tiempo
Para comenzar, vamos a activar las estadísticas de tiempo en nuestra sesión de SQL Server Management Studio.
A continuación, nos situamos en la base de datos que nos proporciona Microsoft como ejemplo «World Wide Importers» que se puede descargar de forma gratuita y vamos a establecer el compatibility level de la base de datos en 150, es decir, SQL Server 2019.
USE WideWorldImporters;
GO
ALTER DATABASE current SET COMPATIBILITY_LEVEL = 150;
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
GO
ALTER DATABASE current SET QUERY_STORE CLEAR;
GO
Paso 2: Activación del Plan de Ejecución
El primer script para nuestra demo será ejecutar el procedimiento «GetStockItemsbySupplier» pasándole el parámetro 2.
EXEC Warehouse.GetStockItemsbySupplier 2;
GO
Nos fijamos en el plan de ejecución y comprobamos que utiliza lo más idóneo para el procedimiento “GetStockItemsbySupplier” con el parámetro 2, «Index Seek».
Ahora elegimos también las estadísticas de tiempo para compararlas más tarde.
Paso 3: Ejecución del procedimiento con el parámetro 4
A continuación, ejecutamos el mismo procedimiento, pero ahora usamos el parámetro 4.
EXEC Warehouse.GetStockItemsbySupplier 4
GO
Como podemos observar, ahora utiliza lo que considera más adecuado, «Index Scan».
Paso 5: Ejecución del procedimiento GetStockItemsbySupplier
Por último, volvemos a ejecutar el procedimiento «GetStockItemsbySupplier» con el parámetro 2 de nuevo.
EXEC Warehouse.GetStockItemsbySupplier 2
GO
Vemos que se ha quedado cacheado el cambio en el plan de ejecución y ahora utiliza «Index Scan» en lugar de «Index Seek» y, comprobamos en las estadísticas de tiempo, hemos empeorado notablemente:
Comprobamos ahora qué sucede en SQL Server 2022.
Vamos a cambiar el nivel de compatibilidad de la base de datos a SQL Server 2022.
ALTER DATABASE WideWorldImporters SET COMPATIBILITY_LEVEL = 160
GO
Ejecutaremos de nuevo el proceso «GetStockItemsbySupplier» pasándole el parámetro 2.
EXEC Warehouse.GetStockItemsbySupplier 2
GO
Verificando el plan de ejecución, vemos que actúa de la misma forma que en SQL Server 2019, usando «Index Seek».
Como siguiente paso, vamos a pasarle el parámetro 4.
EXEC Warehouse.GetStockItemsbySupplier 4
GO
Seguimos obteniendo los mismos resultados, utiliza «Index Scan» para el parámetro 4.
Pero…
¿Qué sucederá si utilizamos el parámetro 2 de nuevo?
¡Veámoslo!
EXEC Warehouse.GetStockItemsbySupplier 2
GO
Ahora sí, si ejecutamos de nuevo el procedimiento «GetStockItemsbySupplier» con el parámetro 2, vemos que vuelve a realizar un «Index Seek» mejorando así a su hermano SQL Server 2019.
Esto se debe a que SQL Server 2022 tiene la capacidad de usar un plan de ejecución u otro dependiendo de los parámetros que le pasemos. SQL Server 2022 guarda un abanico de planes de ejecución y selecciona el mejor para cada caso.
Por último, fijémonos en las estadísticas de tiempo, hemos vuelto a tiempos correctos.
En definitiva, SQL Server 2022 tiene la capacidad de realizar por sí solo muchas mejoras en el rendimiento de nuestro entorno y esto es gracias a sus múltiples características del “Intelligent Query Processing”.
Y hasta aquí el articulo de hoy, espero que hayáis podido mejorar vuestros conocimientos en SQL Server.
Y si te ha gustado, te recomendamos que visites nuestros últimos artículos:
Cómo configurar pgbackrest en PostgreSQL para realizar backups a Azure
La importancia de los Updates para SQL Server
Si quieres que te asesoremos o te ayudemos a migrar de versión a SQL Server 2022, contacta con nosotros.
Azure Data Engineer con más de 7 años de experiencia. Conocimiento de múltiples herramientas y enfocado en el mundo del dato. Experto en tuning de queries y mejora de rendimiento de Base de Datos. Profesional apasionado por la tecnología y los deportes al aire libre. En mi tiempo libre, me encontrarás jugando vóley playa o disfrutando con nuevos videojuegos.