He heredado un plan de mantenimiento que hace lo siguiente:
- Limpiar datos antiguos
- Comprueba la integridad de la base de datos
- Realiza copias de seguridad de la base de datos y del registro de transacciones
- Reorganiza nuestros índices
- Actualiza las estadísticas
- Elimina las copias de seguridad antiguas y los archivos del plan de mantenimiento
Del plan de mantenimiento de 23 minutos, la actualización de las estadísticas toma la asombrosa cantidad de 13 minutos. Durante este período de 13 minutos, el acceso a la base de datos está bloqueado (o al menos, la replicación de esta base de datos a otras está en pausa).
Mi pregunta es:
¿Cuándo deberíamos Actualizar las estadísticas, ¿y por qué?
Esto 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 «sólo porque sí» de hacer cosas innecesarias. Mantenimiento.
Comentarios
- ¿Con qué frecuencia / cómo se insertan / actualizan / eliminan las filas? Para mí, este es el factor decisivo.
- @JNK Insertamos ~ 70.000 filas por día en toda la base de datos. Actualice ~ 100 filas por mes.
- 1 – Esto es más relevante si sabemos por TABLA cuántas filas y 2 – como porcentaje. 70.000 filas por día en una tabla de 1 m es muy diferente a en una tabla de 500 m
- Recomendaría usar algo como ola.hallengren.com / … esta solución solo reconstruye / reorganiza y actualiza lo que se necesita, de esta manera puede acortar el tiempo que toma su plan de mantenimiento y también ahorrar mucho espacio de registro ..
Respuesta
Si no tiene la ventana de mantenimiento para ello, actualizar las estadísticas diariamente es probablemente un poco excesivo . Especialmente si tienes las Estadísticas de actualización automática activadas para la base de datos. En tu publicación original, dijiste que los usuarios están viendo una degradación del rendimiento debido a este plan de mantenimiento. ¿No hay otro momento para ejecutar este mantenimiento? ¿No hay otra ventana? Veo que su plan incluye la reorganización de índices, ¿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 dex).
La frecuencia exacta con la que debe 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
) en los datos, entonces podría tener una programación más infrecuente para el trabajo de actualización de estadísticas.
Una forma de averiguar si sus estadísticas están obsoletas es mirar los planes de ejecución y si las filas estimadas difieren mucho de las filas reales devueltas entonces es una buena indicación de que es necesario aumentar el intervalo. En su caso, está yendo por el otro lado y puede que le convenga un poco de prueba. Actualice las estadísticas semanalmente y, si está comenzando a ver los signos reveladores de estadísticas obsoletas, continúe desde allí.
Si utiliza las estadísticas de actualización automática para su base de datos, consulte esta referencia para conocer el umbral de actualización de las estadísticas.
Comentarios
- Reconstruimos los índices una vez a la semana.
- @ Onion-Knight Luego, también está actualizando las estadísticas una vez a la semana cuando reconstruye sus índices . Eso podría ser suficiente si ‘ está haciendo una reconstrucción de índice general en la base de datos.
Respuesta
¿Cuándo actualizar las estadísticas?
si y solo si la función de actualización automática de estadísticas no es lo suficientemente buena para sus requisitos. Quiero decir, si las estadísticas de creación automática y actualización automática están activadas y obtiene un plan de consulta incorrecto porque las estadísticas no son precisas o actuales, entonces podría ser una buena idea tener control sobre la creación y actualización de estadísticas. pero si está de acuerdo con el rendimiento de su servidor sql y los tiempos de ejecución de las consultas.
le sugiero detener las Estadísticas de actualizaciones comando de sus planes de mantenimiento
actualizar las estadísticas es importante y útil 1. permite que el optimizador de consultas de SQL Server produzca buenos planes de consultas de manera consistente, mientras mantiene bajos los costos de desarrollo y administración 2. El optimizador de consultas utiliza las estadísticas para estimar la selectividad de las expresiones y, por tanto, el tamaño de los resultados intermedios y finales de la consulta. 3.Las buenas estadísticas permiten que el optimizador evalúe con precisión el costo de diferentes planes de consulta y luego elija un plan de alta calidad
Si desea actualizar las estadísticas manualmente, primero debe conocer Cuando 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 se ha actualizado sustancialmente actividad desde la última vez que se crearon o actualizaron las estadísticas, SQL Server actualiza automáticamente las estadísticas muestreando 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 mediante 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á APAGADO
Aquí hay buenos artículos que hablan sobre cuándo se activan las estadísticas de actualización en el servidor SQL
- from simple-talk Sección 13. ¿Cuándo se activa la actualización automática de estadísticas?
- support.microsoft Sección: Automatización de la determinación de Autostats
- msdn.microsoft sección: 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 las estadísticas & su efecto en el rendimiento recomiendo BrentOzar y Kimberly en sqlskills blogs muy buenos & bloggers .