¿Razones para deshabilitar la actualización automática de estadísticas?

13

Me acabo de enterar de que una empresa cliente para la que trabajo ha decidido mantener las opciones de estadísticas de actualización automática desactivadas para algunos de sus servidores SQL, y los DBA que resuelven manualmente los problemas de rendimiento cuando surgen.

Sin embargo, este tipo de no tiene sentido para mí. ¿Por qué querrías evitar que las estadísticas se actualicen?

Alfa
fuente

Respuestas:

11

Mi consejo:

  • Deje activadas las 'estadísticas de actualización automática' (hasta que encuentre una muy buena razón para no hacerlo): no desea una gran eliminación en medio de un día para descartar los planes de consulta hasta la próxima vez que ejecute el mantenimiento.
  • Sin embargo, programe las estadísticas de mantenimiento / actualización del índice en un momento tranquilo. sp_updatestatsactualizará todas las estadísticas de todas las tablas en una base de datos para usted, pero eso también causará recompilaciones de procesos almacenados, así que elija su tiempo con cuidado (es decir, sp_updatestatsjusto antes de que su informe de fin de mes sea probablemente subóptimo).

La frecuencia con la que necesita ejecutar estadísticas de mantenimiento / reconstrucción de índice depende de la carga de su base de datos, específicamente con qué frecuencia se modifican sus datos (es decir, INSERT/ UPDATE/ DELETE). Si está modificando datos en todo el programa (es decir, una tabla de preparación para un proceso por lotes semanal), probablemente desee actualizar las estadísticas / reorganizar los índices todas las noches. Si sus datos son bastante más estáticos, es probable que pueda hacer un horario semanal o quincenal.

Simon Righarts
fuente
7

Solo lo he visto una vez con una aplicación incorrecta que tenía un montón mal indexado y tenía un ETL pesado.
Esto era basura y por suerte no era mío.

De lo contrario, no hay razón.

Si está recibiendo actualizaciones de estadísticas en momentos inapropiados, significa que está realizando un mantenimiento incorrecto de índices / estadísticas o que tiene eliminaciones / cargas masivas que alcanzan el umbral.

Con SQL Server 2005+ puede diferir la actualización de estadísticas de todos modos.
Consulte "Cuándo utilizar las actualizaciones de estadísticas sincrónicas o asincrónicas"

Sería interesante ver qué artículo han seguido o leído para tomar esta decisión ...

gbn
fuente
¿Es quizás un problema heredado? ¿El mantenimiento de estadísticas fue diferente en 2k?
JNK
@JNK: IIRC algunos cambios en el umbral de cambio de fila, pero tendría que buscarlo ... ah sí, ahora se realiza un seguimiento por columna, no por tabla msdn.microsoft.com/en-us/library/ms190283.aspx
gbn
¿Es el 20% en 2008?
JNK
20% + 500 por> 500 por columna desde SQL Server 2005+
gbn
7

La única vez que desactivé las estadísticas automáticas fue cuando utilicé algunos comandos no documentados para crear algunas estadísticas falsas que no quería que el sistema borrara mientras se cargaban los datos. Este fue un caso MUY de borde.

mrdenny
fuente
5

En los viejos tiempos (SQL Server 2000) tener la configuración de estadísticas de actualización automática activada podría provocar grandes "pausas" en las aplicaciones OLTP cuando SQL decidió hacer una actualización de estadísticas.

A partir de SQL Server 2005 en adelante, existe una opción asincrónica que no generará una "pausa" cuando las estadísticas no estén actualizadas y, posteriormente, se vuelvan a compilar. Las estadísticas se volverán a compilar de forma asíncrona para la próxima vez que sean necesarias.

Sin embargo, tenga en cuenta que hay un equilibrio: para conjuntos de datos grandes, es posible que desee que la consulta actual tenga en cuenta las estadísticas más actualizadas, ya que la consulta puede tardar exponencialmente más tiempo con un plan de consulta ineficiente.

También puede monitorear el número de recompilaciones por segundo y otras métricas de rendimiento cruciales utilizando los contadores de rendimiento que publica SQL Server, ya que dicen que la prueba está en el budín.

ifx
fuente
4

¿Qué tan activos son los sistemas?

Si en su mayoría son sistemas de lectura que podría obtener sin actualizar, si sucede que lo hacen manualmente cuando están cambiando datos (insertar, actualizar, eliminar).

Sin embargo, para la mejor práctica, se recomienda mantenerlo porque creo que sería raro que sea un problema de rendimiento. Probablemente les enviaría artículos y publicaciones de blog sugiriendo que se dejara encendido. Kimberly Tripp tiene algunos buenos.


fuente
4

Si bien nunca voy a contradecir ni intencionalmente rechazar a MrDenny de ninguna manera (demasiado respeto por su conocimiento y contribuciones a la comunidad), he notado que la documentación de MS recomienda desactivar las estadísticas de actualización automática.

En Almacenamiento y configuración y planificación de la capacidad de SQL Server (SharePoint Server 2010), MS recomienda desactivarlo.

También he leído la misma recomendación de MS para versiones anteriores de SP, pero no puedo encontrar los enlaces en este momento.

Pero NO soy un DBA experto en SP, por lo que es posible que también desee verificar lo que Chun Liu, ingeniero de campo de MS Permier, tiene que decir al respecto en Chun Liu en SharePoint o simplemente ignorar esta publicación y dejarla encendida.

Bruce
fuente
55
Su consejo es específico para las bases de datos de SharePoint, generalmente no es aplicable a todas las instalaciones de SQL Server.
Simon Righarts
0

Por lo general, solo los apaga si tiene un método para actualizarlos usted mismo. Hago esto todo el tiempo ya que necesitamos un muestreo mejor o simplemente diferente del que harán las estadísticas automáticas. Eso es bastante común, pero no simplemente lo apaga y no hace nada más.

Andrew J. Kelly
fuente