sql >> Base de Datos >  >> RDS >> Sqlserver

Creación de planes de mantenimiento en SQL Server

Los planes de mantenimiento en SQL Server nos brindan una manera fácil de organizar, configurar y programar tareas que garantizan que el motor de la base de datos y las bases de datos alojadas en él se mantengan en forma.

Los planes de mantenimiento ofrecen al administrador de la base de datos la oportunidad de configurar tareas clave como indexación, actualizaciones de estadísticas, copias de seguridad, limpieza de registros y otras. En un artículo anterior, ya discutimos cómo crear un plan de mantenimiento básico para realizar una verificación de consistencia de la base de datos. En este artículo, haremos un recorrido por la creación de un plan de mantenimiento para una instancia de base de datos que hospeda bases de datos pequeñas. En el transcurso del tutorial, explicaré las elecciones clave realizadas en cada paso en el contexto de una instancia con una cantidad moderadamente grande de pequeños bases de datos La idea es configurar el mantenimiento de estas bases de datos sin tener que hacerlo una por una. El enfoque en bases de datos pequeñas pretende evitar la sobrecarga de rendimiento asociada con las operaciones de mantenimiento.

Plan de Mantenimiento de Tareas Semanales

Figura 1:Asistente para iniciar el plan de mantenimiento

Lanzamos el Asistente para planes de mantenimiento desde Object Explorer>[Instance Name]>Management>Maintenance Plans (Ver Figura 1). La primera página del asistente nos brinda una descripción general de las tareas que se pueden configurar. Si bien existen otras formas de realizar estas tareas mediante código y programación de trabajos, el Asistente para planes de mantenimiento hace que sea bastante fácil de lograr cuando se trata de una gran cantidad de bases de datos alojadas en una instancia.

Figura 2:Asistente para planes de mantenimiento

En la Figura 3, vemos que SQL Server expone campos para que nombremos y describamos el plan de mantenimiento. Introducir una descripción del plan tiene sentido a efectos de documentación. Imagine hacerse cargo de una nueva instancia de SQL Server en una nueva empresa. Sería útil si encuentra descripciones de objetos de SQL Server en los objetos. Deberías hacer lo mismo por los demás. Tenga en cuenta que la descripción que he dado pretende simplemente ilustrar el punto. Será deseable una descripción más detallada en un entorno de producción.

Figura 3:Nombre del plan de mantenimiento

Tenga en cuenta que en la Figura 3 tenemos la opción de elegir si queremos usar un horario único para todas las tareas o un horario separado para cada tarea. He optado por utilizar horarios separados para tener la flexibilidad de escalonar las tareas. No queremos que se ejecuten demasiadas operaciones de mantenimiento al mismo tiempo o consecutivamente durante mucho tiempo para evitar el riesgo de sobrecargar los recursos del servidor. La decisión que tome en este punto también puede depender de la capacidad de los recursos disponibles y la ventana de mantenimiento disponible. Algunas personas tienen suficiente capacidad y querrían terminar la tarea rápidamente durante cada ejecución. En el escenario cubierto por este artículo, asumimos que la instancia en cuestión no se utiliza durante el fin de semana.

En la Figura 4, elegimos las tareas que queremos ejecutar. Una de las ventajas de SQL Server es que cada tarea se describe en la parte inferior de la ventana. Vale la pena cuando se trabaja como DBA para comprender lo que está haciendo, incluso cuando se trabaja en "Windows". En mi experiencia, muchos "administradores" tienen la costumbre de simplemente hacer clic en "SIGUIENTE, SIGUIENTE, SIGUIENTE" porque tienen prisa por hacer funcionar la funcionalidad. Pero tomarse el tiempo para comprender el impacto del próximo "SIGUIENTE" ayuda a asegurarse de que está haciendo algo que agregará valor, no causará nuevos problemas.

Figura 4:Selección de tareas de mantenimiento

Las tareas que hemos seleccionado se describen a continuación:

Comprobar la integridad de la base de datos La tarea realiza comprobaciones de coherencia interna de los datos y las páginas de índice dentro de la base de datos.

El índice de reorganización tarea desfragmenta y compacta índices agrupados y no agrupados en tablas y vistas. Esto mejorará el rendimiento del escaneo de índices.

El índice de reconstrucción La tarea reorganiza los datos en las páginas de datos e índices mediante la reconstrucción de índices. Esto mejora el rendimiento de las exploraciones y búsquedas de índices. Esta tarea también optimiza la distribución de datos y el espacio libre en las páginas de índice, lo que permite un crecimiento futuro más rápido.

Las Actualización de estadísticas La tarea garantiza que el optimizador de consultas tenga información actualizada sobre la distribución de valores de datos en las tablas. Esto permite que el optimizador haga mejores juicios sobre las estrategias de acceso a los datos.

La limpieza del historial La tarea elimina los datos históricos sobre las operaciones de copia de seguridad y restauración, el Agente SQL Server y el plan de mantenimiento. Este asistente le permite especificar el tipo y la antigüedad de los datos que se eliminarán.

La base de datos de copia de seguridad (completa) La tarea le permite especificar las bases de datos de origen, los archivos o cintas de destino y las opciones de sobrescritura para una copia de seguridad completa.

La limpieza de mantenimiento La tarea elimina los archivos sobrantes de la ejecución de un plan de mantenimiento.

La figura 5 muestra dónde seleccionamos el orden en el que se ejecutan estas tareas. Esto es importante por varias razones. Por ejemplo, no tiene sentido realizar una actualización de estadísticas de índice después de una reconstrucción de índice, ya que una reconstrucción de índice también realiza una actualización de estadísticas de índice en SQL Server. Veremos más adelante en el artículo cómo manejamos esto dado el orden que hemos elegido. Otra posible consideración es que puede decidir que tiene más sentido realizar primero una copia de seguridad antes de proceder con ciertos tipos de mantenimiento.

Figura 5:Orden de las tareas

En la Figura 6, elegimos a qué bases de datos queremos aplicar la primera tarea de mantenimiento. Tenemos que hacer esto para cada una de las tareas subsiguientes también. Esto es importante en el sentido de que algunas bases de datos pueden necesitar estar exentas de tales operaciones. Por ejemplo, si tiene una combinación de bases de datos muy grandes (VLDB) y bases de datos muy pequeñas en la misma instancia (una mala idea), es posible que deba excluir las VLDB de las reconstrucciones de índice ciegas. En tal caso, debe identificar las tablas clave en ese VLDB y centrar las reconstrucciones y otras operaciones de mantenimiento intensivo en las tablas clave. En este ejemplo, excluí las bases de datos del sistema porque puedo planificar cuidadosamente los mantenimientos para ellas por separado. Creo que es más seguro manejar las bases de datos del sistema por separado, dado que cualquier daño en ellas podría afectar a toda la instancia.

Figura 6:Determinar el alcance

Cada operación de mantenimiento tiene su propio conjunto de opciones. La Figura 7 muestra las opciones que tenemos que decidir para DBCC CHECKDB. Me he desviado ligeramente de la configuración predeterminada aumentando el MAXDOP a 2. En la Figura 8, elegimos ejecutar esta tarea a la 1:00 a. m. los sábados y domingos por la noche.

Figura 7:Opciones de DBCC

Figura 8:Calendario de DBCC

La tarea Reorganizar índice también tiene un conjunto específico de opciones. Vale la pena mencionar el conjunto de condiciones que determinarán si un índice debe reorganizarse o no:30% de fragmentación, más de 1000 páginas y utilizado por última vez como máximo 28 días nuevamente. Esta ventana subraya la necesidad de entender las opciones que estamos haciendo. Para realizar estas opciones correctamente, debe comprender los índices y la indexación en una medida razonable. Tenga en cuenta que se deberán realizar elecciones similares en la tarea Reconstruir índice. Además, tenga en cuenta que el umbral de fragmentación recomendado para la reorganización de índices es en realidad del 15 % y no del 30 %.

Figura 9:Reorganizar opciones de índice

La tarea de reconstrucción del índice ofrece algunas otras opciones además de las de la reorganización del índice. (Ver Figura 10). Tenga en cuenta que he elegido ordenar los resultados en TempDB. Para que esta elección sea efectiva, es importante ajustar TempDB adecuadamente, ya que la elección implica que la ordenación de esta operación en TODAS las bases de datos ocurrirá en TempDB. Además, tenemos que configurar el calendario para la reconstrucción del índice. También configuré MAXDOP en 2 para esta tarea.

Figura 10:Opciones de reconstrucción de índice

Mencionamos anteriormente que cuando se invoca una reconstrucción de índice en SQL Server, la actualización de estadísticas en los índices también se invoca de manera predeterminada. Entonces, cuando configuramos la tarea de actualización de estadísticas, elegimos actualizar solo las estadísticas de columna (Figura 11). Esta ventana también nos da la opción de hacer un escaneo completo o un muestreo. Dado que el contexto son bases de datos pequeñas, elegimos la opción de escaneo completo. Una vez más, esto requiere cierta comprensión de las estadísticas.

Figura 11:Tarea de actualización de estadísticas

Elegimos configurar el trabajo de limpieza para eliminar cualquier dato que tenga más de 4 semanas, como se muestra en la Figura 12.

Figura 12:Tarea de limpieza del historial

¡La tarea de copia de seguridad expone una gran cantidad de opciones de configuración en tres pestañas! La Figura 13 muestra que elegimos limitar esta tarea de copia de seguridad a las bases de datos de los usuarios. Lo programamos para las 3:00 a. m. los domingos y vamos más allá para elegir el destino de la copia de seguridad como E:\MSSQL\Backup (consulte la figura 14). En la tercera pestaña (Figura 15), tomamos decisiones para verificar la copia de seguridad y también realizamos una suma de verificación, por lo que estamos más cerca de estar seguros de que la copia de seguridad es confiable.

Figura 13:Tarea de copia de seguridad de la base de datos

Figura 14:Destino de copia de seguridad

Figura 15:Opciones de copia de seguridad

Finalmente, configuramos una tarea que gestionará la retención de nuestro registro del Plan de Mantenimiento. (Figura 16). Nuevamente, elegimos eliminar cualquier registro de registro que tenga más de 4 semanas. La Figura 17 muestra las opciones que seleccionamos para garantizar que las actividades del plan de mantenimiento se registren y se envíen por correo al grupo de administración de la base de datos. Eso sí, para que esta última opción funcione, debemos tener configurado el Correo electrónico de base de datos y configurar los operadores correctamente.

Figura 16:Tarea de limpieza del plan de mantenimiento

Figura 17:Opciones de informe

Las figuras 18 y 19 muestran un resumen de las tareas que hemos configurado y comentarios sobre la finalización exitosa del asistente.

Figura 18:Resumen de opciones

Figura 19:finalización del asistente

Plan de Mantenimiento para Tareas Diarias

También podemos configurar Planes de mantenimiento separados para otros fines, como simplemente organizarse. No necesitamos configurar un plan separado para las tareas diarias ya que podemos configurar los horarios por separado para cada tarea. Una de las razones por las que podemos querer configurar un plan separado podría ser seleccionar un conjunto diferente de tareas dirigidas a un conjunto diferente de bases de datos (en realidad, es posible que aún podamos hacer esto también en el plan existente).

En el siguiente ejemplo, supongamos que tenemos otro conjunto de grandes bases de datos dentro de la misma instancia con diferentes objetivos de punto de recuperación. Luego, debemos usar una estrategia de copia de seguridad diferente:una programación de copia de seguridad diferencial diaria y una programación de copia de seguridad del registro de transacciones por hora, además de una copia de seguridad completa semanal para garantizar un RPO de 1 hora. (Ver Figuras 21 y 22).

Figura 20:Plan de mantenimiento de tareas diarias

Figura 21:Tareas de copia de seguridad diferencial y Tlog

Figura 22:Orden de tareas del plan de mantenimiento diario

Para la copia de seguridad diferencial, elegimos un programa diario que se activa a las 2:00 a. m. todos los días. (Ver Figura 23). Y elija las mismas opciones de respaldo que hicimos para el respaldo semanal completo configurado anteriormente.

Figura 23:Calendario del plan de mantenimiento diario

Figura 24:Ubicación de copia de seguridad diferencial

Figura 25:Opciones de respaldo diferenciales

Por otro lado, elegimos programar la copia de seguridad diferencial para que ocurra cada hora de cada día. También nos aseguramos de que cada conjunto de copia de seguridad de la base de datos se almacene en un directorio que tenga su propio nombre. El resto del asistente es muy similar al tutorial anterior.

Figura 26:Calendario de copia de seguridad del registro de transacciones

Figura 27:Ubicación de la copia de seguridad del registro de transacciones

Figura 28:Opciones de copia de seguridad del registro de transacciones

Conclusión

Al completar el asistente del plan de mantenimiento, terminamos con un plan de mantenimiento y un conjunto correspondiente de trabajos del agente SQL (consulte la figura 29). Esencialmente, el plan de mantenimiento es una colección de paquetes SSIS, y cuando examina los trabajos programados, encontrará que el paso de trabajo ejecutado en cada trabajo del plan secundario es un paquete SSIS (consulte la figura 30).

En un ejemplo posterior, mostraremos que podemos ejecutar los trabajos del subplan anualmente. También revisaremos los resultados de la ejecución del plan de mantenimiento y solucionaremos los errores relacionados con la ejecución de los pasos del trabajo. También examinaremos el registro del plan de mantenimiento.

Figura 29:Trabajos del Agente SQL resultantes

Figura 30:Paso de trabajo del paquete SSIS