¿Cuándo actualizar las estadísticas?

42

Heredé un plan de mantenimiento que hace lo siguiente:

  • Limpieza de datos antiguos
  • Comprueba la integridad de la base de datos
  • Realiza copias de seguridad de bases de datos y registros de transacciones
  • Reorganiza nuestros índices
  • Estadísticas de actualizaciones
  • Eliminar copias de seguridad antiguas y archivos del plan de mantenimiento

Del plan de mantenimiento de 23 minutos, la actualización de las estadísticas lleva unos asombrosos 13 minutos. Durante este período de 13 minutos, se bloquea el acceso a la base de datos (o al menos, se detiene la replicación de este DB a los demás).

Mi pregunta es:

¿Cuándo deberíamos actualizar las estadísticas y por qué?

Este parece ser el tipo de cosas que deberíamos hacer con menos frecuencia que todos los días. Estoy tratando de sacarnos de la mentalidad de "solo porque" de hacer Mantenimiento innecesario.

Caballero Cebolla
fuente
2
¿Con qué frecuencia / cómo se insertan / actualizan / eliminan las filas? Para mí este es el factor decisivo.
JNK
@JNK Insertamos ~ 70,000 filas por día en toda la base de datos. Actualización ~ 100 filas al mes.
Onion-Knight
1 - Esto es más relevante si sabemos por TABLA cuántas filas, y 2 -como porcentaje. 70k filas por día en una mesa de 1m es muy diferente a una mesa de 500m
JNK
Recomendaría usar algo como ola.hallengren.com/… esta solución solo reconstruye / reorganiza y actualiza lo que se necesita de esta manera, podría acortar el tiempo que toma su plan de mantenimiento y también ahorrar mucho espacio de registro ...
Peter,

Respuestas:

28

Si no tiene la ventana de mantenimiento, actualizar las estadísticas diariamente probablemente sea un poco exagerado. Especialmente si tiene activadas las Estadísticas de actualización automática para la base de datos. En su publicación original, dijo que los usuarios están viendo una degradación del rendimiento debido a este plan de mantenimiento. ¿No hay otro momento para ejecutar este plan de mantenimiento? ¿Ninguna otra ventana? Veo que su plan abarca la reorganización del índice, ¿cuándo está reconstruyendo los índices? Cuando ocurre esa operación, las estadísticas se actualizan automáticamente (siempre que no esté desactivado para el índice).

La frecuencia exacta con la que debería actualizar las estadísticas depende en gran medida de la cantidad de modificación de datos que reciben sus índices y datos . Si hay muy pocas modificaciones ( INSERT, UPDATE, DELETE) a los datos, entonces usted podría tener un horario más frecuente para el trabajo estadísticas de actualización.

Una forma de averiguar si sus estadísticas son obsoletas es mirar los planes de ejecución y si estima que las filas difieren mucho de las filas reales devueltas, eso es una buena indicación de que el intervalo debe ser aumentado. En su caso, está yendo hacia el otro lado y puede que necesite un poco de prueba. Actualice las estadísticas semanalmente, y si está comenzando a ver signos reveladores de estadísticas obsoletas, vaya desde allí.

Si está utilizando las estadísticas de actualización automática para su base de datos, consulte esta referencia para conocer el umbral de cuándo se actualizan las estadísticas.

Thomas Stringer
fuente
Reconstruimos los índices una vez por semana.
Onion-Knight
55
@ Onion-Knight Entonces también está actualizando las estadísticas una vez por semana cuando reconstruye sus índices. Eso podría ser suficiente si está realizando una reconstrucción de índice general en la base de datos.
Thomas Stringer
25

¿Cuándo actualizar las estadísticas?

si y solo si la función de estadísticas de actualización automática no es lo suficientemente buena para sus requisitos. Es decir, si las estadísticas de creación automática y actualización automática están activadas y está obteniendo un mal plan de consulta porque las estadísticas no son precisas o actuales, entonces sería una buena idea tener control sobre la creación y actualización de estadísticas. pero si está bien con el rendimiento de su servidor sql y los tiempos de ejecución de consultas.

entonces sugiero detener el comando Estadísticas de actualizaciones de sus Planes de mantenimiento

la actualización de estadísticas es importante y útil 1. permite que el optimizador de consultas de SQL Server produzca buenos planes de consulta de manera consistente, mientras mantiene bajos los costos de desarrollo y administración 2. El optimizador de consultas usa las estadísticas para estimar la selectividad de las expresiones y, por lo tanto, el tamaño de las intermedias. y resultados de la consulta final. 3. Las buenas estadísticas permiten al optimizador evaluar con precisión el costo de los diferentes planes de consulta y luego elegir un plan de alta calidad


Si desea actualizar las estadísticas manualmente, primero debe saber cuándo las estadísticas se actualizan automáticamente

Si el optimizador de consultas de SQL Server requiere estadísticas para una columna en particular en una tabla que ha sufrido una actividad de actualización sustancial desde la última vez que se crearon o actualizaron las estadísticas, SQL Server actualiza automáticamente las estadísticas al muestrear los valores de las columnas (mediante el uso de estadísticas de actualización automática) . La actualización automática de estadísticas se activa mediante la optimización de la consulta o la ejecución de un plan compilado, e involucra solo un subconjunto de las columnas a las que se hace referencia en la consulta. Las estadísticas se actualizan antes de la compilación de consultas si AUTO_UPDATE_STATISTCS_ASYNC está desactivado

Aquí hay buenos artículos que hablan sobre cuándo se activan las estadísticas de actualización en el servidor SQL

  1. de la sección 13 de charla simple . ¿Cuándo se activa la actualización automática de estadísticas?
  2. support.microsoft Sección: Automatizar la determinación de Autostats
  3. Sección msdn.microsoft : Mantenimiento de estadísticas en SQL Server 2008

después de saber cuándo se activan las estadísticas, le ayudará a decidir cuándo actualizar las estadísticas manualmente

para saber más sobre estadísticas y su efecto en el rendimiento, recomiendo BrentOzar y Kimberly en sqlskills muy buenos blogs y bloggers.

AmmarR
fuente