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.
sql-server
performance
maintenance
statistics
Caballero Cebolla
fuente
fuente
Respuestas:
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.
fuente
¿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
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.
fuente