Saltar al contenido
Categoría: SQL Server
2024-01-25

Parameter Sensitive Plan para SQL Server 2022

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

Ledger para SQL Server 2022

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.

Complete este formulario para recibir la guía de Windows Server en Azure
*Obligatorio
Complete este formulario para recibir la guía de Windows Server en Azure
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir 4 best practices to implement a comprehensive Zero Trust security approach
*Obligatorio
Complete este formulario para recibir 4 best practices to implement a comprehensive Zero Trust security approach
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir Cloud Migration Essentials
*Obligatorio
Complete este formulario para recibir Cloud Migration Essentials
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir Cloud security Advice for Nonprofit Leaders
*Obligatorio
Complete este formulario para recibir Cloud security Advice for Nonprofit Leaders
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir Prevent data leaks with Microsoft 365 Business Premium
*Obligatorio
Complete este formulario para recibir Prevent data leaks with Microsoft 365 Business Premium
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete this form to recieve the guide of Windows Server on Azure
*Required
Complete this form to recieve the guide of Windows Server on Azure
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve 4 best practices to implement a comprehensive Zero Trust security approach
*Required
Complete this form to recieve 4 best practices to implement a comprehensive Zero Trust security approach
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Cloud Migration Essentials
*Required
Complete this form to recieve Cloud Migration Essentials
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Cloud security Advice for Nonprofit Leaders
*Required
Complete este formulario para recibir Cloud security Advice for Nonprofit Leaders
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Prevent data leaks with Microsoft 365 Business Premium
*Obligatorio
Complete this form to recieve Prevent data leaks with Microsoft 365 Business Premium
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Cloud Migration Simplified Ebook.
*Obligatorio
Complete this form to recieve Prevent data leaks with Microsoft 365 Business Premium
Thank you for filling out the form [name]. Here's your Free eBook!