Published on

August 12, 2019

Comprendiendo y Actualizando Estadísticas en SQL Server

En este artículo, exploraremos el concepto de estadísticas en SQL Server y aprenderemos cómo actualizarlas utilizando el procedimiento almacenado integrado sp_updatestats.

Comprendiendo las Estadísticas en SQL Server

Las estadísticas en SQL Server son objetos de base de datos que contienen una distribución estadística detallada de los valores de columna para tablas o vistas indexadas. El optimizador de consultas utiliza esta información para estimar el número de filas que se devolverán de una consulta. Las estadísticas actualizadas ayudan al optimizador de consultas a generar planes de ejecución más optimizados, lo que resulta en un mejor rendimiento de la consulta.

Las estadísticas pueden quedar obsoletas cuando se realizan operaciones de modificación en las tablas. En tales casos, el optimizador de consultas puede no ser capaz de generar el mejor plan de ejecución, lo que lleva a problemas de rendimiento. Por lo tanto, se recomienda mantener las estadísticas actualizadas.

Actualizando Estadísticas con sp_updatestats

El procedimiento almacenado sp_updatestats actualiza las estadísticas de todas las tablas definidas por el usuario y las tablas internas en la base de datos actual, asegurando que las estadísticas estén actualizadas. La sintaxis para utilizar este procedimiento es la siguiente:

sp_updatestats [ [ @resample = ] 'resample' ]

Para actualizar las estadísticas de todas las tablas en la base de datos AdventureWorks, puedes ejecutar la siguiente consulta:

USE AdventureWorks;
GO
EXEC sp_updatestats;

El mensaje de salida puede indicar que no es necesario actualizar algunas estadísticas. Esto se debe a que incluso si se ha modificado una sola fila en una tabla desde la última actualización de estadísticas, las estadísticas aún se actualizarán. De lo contrario, las estadísticas no se actualizarán.

Monitoreando Estadísticas

La vista de administración dinámica sys.dm_db_stats_properties (DMV) se puede utilizar para monitorear los detalles de las estadísticas de una tabla o vista indexada específica. La siguiente consulta demuestra cómo recuperar los detalles de las estadísticas para la tabla Production.Product:

SELECT sp.stats_id, name, filter_definition, last_updated, rows, rows_sampled, steps, unfiltered_rows, modification_counter
FROM sys.stats AS stat
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp
WHERE stat.object_id = OBJECT_ID('Production.Product');

Al actualizar una sola fila en la tabla Production.Product y ejecutar nuevamente la consulta de monitoreo de estadísticas, se pueden observar cambios en la columna modification_counter, que indica el número de modificaciones desde la última actualización de estadísticas.

Utilizando la Opción RESAMPLE

El procedimiento sp_updatestats se puede utilizar con la opción RESAMPLE para actualizar las estadísticas en función de la última tasa de muestreo. De forma predeterminada, las estadísticas se actualizan con la tasa de muestreo predeterminada determinada por SQL Server. Para utilizar la opción RESAMPLE, puedes ejecutar la siguiente consulta:

EXEC sp_updatestats @resample = 'resample';

Es importante tener en cuenta que si la última actualización de estadísticas escaneó toda la tabla, utilizar el procedimiento sp_updatestats con la opción RESAMPLE también escaneará todas las filas de la tabla. Esto puede consumir muchos recursos en tablas grandes con modificaciones mínimas.

Conclusión

En este artículo, discutimos la importancia de tener estadísticas actualizadas para el rendimiento de las consultas en SQL Server. Aprendimos cómo actualizar las estadísticas utilizando el procedimiento almacenado sp_updatestats y exploramos el uso de la opción RESAMPLE. Mantener las estadísticas actualizadas es una práctica recomendada para garantizar un rendimiento óptimo de las consultas en SQL Server.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.