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

Mantenimiento Programado de la Base de Datos 24/7 IS en MS SQL Server

Introducción

Este artículo es una breve revisión de los principales mantenimientos programados con una base de datos del sistema de información 24/7 que no tiene tiempo de inactividad, así como enfoques para su ejecución en MS SQL Server.

Todos los comentarios y actualizaciones del artículo son muy apreciados.

Mantenimiento programado

Hay el siguiente mantenimiento programado que me gustaría señalar:

  1. Copias de seguridad programadas con verificación adicional sin restauración
  2. Restauración programada de copias de seguridad para verificar su rendimiento
  3. Análisis del dispositivo de almacenamiento de datos que contiene el sistema y todas las bases de datos necesarias
  4. Pruebas programadas de los servicios requeridos
  5. Optimización programada del rendimiento de un sistema
  6. Mantenimiento programado de la integridad de los datos
  7. Mantenimiento programado de validación de datos

Los tres primeros puntos son los más importantes, ya que proporcionan un sistema que se restaura después de varias fallas. Sin embargo, recomendaría ejecutar al menos tres puntos también, para que los usuarios puedan trabajar con tranquilidad (por lo tanto, todas las consultas deben ejecutarse rápido) y para que los datos se validen en todos los sistemas de informes.

Para automatizar el mantenimiento programado, es posible organizar sus partes en el Agente o el Programador de Windows.

El sexto punto se basa en el comando CHECKDB.

El séptimo punto se implementa hacia el área de dominio utilizada en el sistema de información.

Voy a hablar en detalle sobre los primeros cinco puntos.

Copias de seguridad programadas con verificación adicional sin restaurar

Dado que hay muchos artículos sobre este tema, se debe tener en cuenta que es necesario ejecutar regularmente este mantenimiento programado en un servidor de respaldo, en lugar de hacerlo en el servidor principal. Este servidor de respaldo debe contener datos actualizados (por ejemplo, el que se obtuvo con la replicación). Además, debe realizar una copia de seguridad de todas las bases de datos del sistema (excepto tempdb) en cada instancia de MS SQL Server.

Cuando la copia de seguridad falla o una exploración de la copia de seguridad identifica un problema, es necesario informar esta información a los administradores. Por ejemplo, puede enviarles un correo electrónico.

Es importante determinar una estrategia para la copia de seguridad, que responderá a las siguientes preguntas:

  1. ¿Con qué frecuencia y cuándo debemos realizar una copia de seguridad de los datos (completo, diferencial y registro de transacciones)?
  2. ¿Cuánto tiempo y cuándo debemos eliminar las copias de seguridad?

Restauración programada de copias de seguridad para verificar su rendimiento

Recomiendo ejecutar este procedimiento en un servidor de respaldo con utilidades de terceros o el RESTORE comando.

Cuando falla la restauración de la copia de seguridad, es necesario informar esta información a los administradores. Por ejemplo, puede enviarles un correo electrónico.

Además, es necesario restaurar las copias de seguridad de las bases de datos del sistema. Para hacer esto, debe restaurarlos como una base de datos de usuario habitual con un nombre que difiera de los nombres de las bases de datos del sistema.

Análisis de los dispositivos de almacenamiento de datos que contiene el sistema y todas las bases de datos necesarias

Debe analizar cuánto espacio ocupa cada base de datos, cómo cambia el tamaño de los archivos y cómo cambia el tamaño del espacio libre en todo el dispositivo de almacenamiento. Por ejemplo, puede realizar esta tarea parcialmente con la recopilación automática de datos sobre archivos de bases de datos y unidades lógicas del sistema operativo en MS SQL Server.

Puede hacer esta verificación todos los días y luego enviar los resultados. Como de costumbre, puede enviarlos a un correo electrónico.

También es necesario monitorear las bases de datos del sistema para que te asegures de que todo funciona correctamente.

Además, es importante probar los dispositivos de almacenamiento para verificar si hay alguna depreciación o sectores defectuosos.

Tenga en cuenta que mientras se prueba, un dispositivo debe estar fuera de servicio y todos los datos deben copiarse a otro dispositivo, ya que la prueba carga el dispositivo drásticamente.

Esta tarea está estrictamente relacionada con los deberes del administrador del sistema, por lo que la dejaremos de lado. Para tomar el control total del caso, debe automatizar la entrega del informe por correo electrónico.

Recomendaría ejecutar esta prueba dos veces al año.

Pruebas programadas de los servicios requeridos

El tiempo de inactividad del servicio es una mala práctica. Por lo tanto, un servidor de respaldo entrará en acción en caso de fallas. Aún así, es necesario verificar los registros de vez en cuando. Además, también puede pensar en una recopilación automática de datos con notificación adicional a un administrador mediante el envío de un correo electrónico.

Es necesario verificar las tareas del Agente SQL Server o el Programador de Windows con una recopilación automática de datos sobre las tareas completadas en MS SQL Server.

Optimización programada del rendimiento de un sistema

Incluye los siguientes aspectos:

  1. Automatización de la desfragmentación de índices en bases de datos de MS SQL Server
  2. Automatización de la recopilación de datos sobre cambios de esquemas de bases de datos en MS SQL Server. Puede restaurar una copia de seguridad y comparar cambios, por ejemplo, usando dbForge
  3. Automatización de la limpieza de procesos atascados en MS SQL Server
  4. Limpieza de la caché de procedimientos. Aquí debe determinar cuándo y qué debe limpiarse
  5. Implementación de un indicador de rendimiento
  6. Desarrollo y modificación de índices agrupados

Además, recomiendo apagar el AUTO_CLOSE característica.

A veces, por diferentes motivos, un optimizador paraleliza una consulta, lo que no siempre es óptimo.

Por ello, hay algunas recomendaciones que debes tener en cuenta:

  1. Si obtiene muchos datos, deje el paralelismo.
  2. Si obtiene algunos datos, no utilice el paralelismo.

Hay dos parámetros en la configuración de la instancia de SQL Server responsables del paralelismo:

  1. máximo grado de paralelismo. Para desactivar el paralelismo, establezca "1" como valor, lo que significa que solo un procesador ejecutará un código.
  2. umbral de costo para el paralelismo. Debería estar configurado de forma predeterminada.

Hay dos colas principales:

  1. una cola para el tiempo de CPU (cola QCPU). Tiene lugar cuando una consulta ha sido habilitada y está esperando que un procesador la ejecute.
  2. una cola de recursos (cola QR). Tiene lugar cuando una consulta está esperando a que se desvinculen los recursos para ejecutar el proceso.

La siguiente fórmula describe la ejecución de la consulta (T):

T=TP+TQR+TCPU+TQCPU, donde:

  • TP está recopilando tiempo para un plan
  • TQR es tiempo de cola para recursos (QR queue)
  • TQCPU es el tiempo de cola para que los recursos se desvinculen (cola QCPU)
  • TCPU es hora de ejecutar una consulta

En la vista del sistema sys.dm_exec_query_stats:

  1. tiempo_trabajo_total =TP+TCPU+TQCPU
  2. tiempo_transcurrido_total =TQR+TCPU

Las herramientas integradas no permiten evaluar con precisión el tiempo de ejecución de las consultas.

En la mayoría de los casos, total_elapsed_time le proporciona el tiempo que está cerca del tiempo de ejecución de la consulta.

Puede determinar el tiempo de ejecución de la consulta con mayor precisión utilizando el seguimiento. Como alternativa, puede registrar la hora de inicio y finalización de la consulta. Tenga cuidado con los rastros, ya que cargan significativamente el sistema. Por lo tanto, es mejor realizarlo en un servidor de respaldo y recopilar datos del servidor principal. En este caso, solo se cargará la red.

Al paralelizar, SQL Server asigna N procesos a una consulta (en la edición Standart n<=4). Cada proceso requiere tiempo de CPU para ejecutar una consulta (no siempre se debe ejecutar un proceso en cada núcleo).

Cuantos más procesos tenga, mayores serán las posibilidades de que algunos sean reemplazados por otros, lo que conduce a un aumento de TQCPU.

Puede llevar mucho más tiempo ejecutar una consulta al paralelizar, en los siguientes casos:

  1. Bajo rendimiento del subsistema de disco. En este caso, la descomposición de consultas lleva mucho más tiempo.
  2. Los datos pueden estar bloqueados para el proceso.
  3. No hay índice para el predicado, lo que lleva a un escaneo de la tabla.
    Comentarios:
    Debe deshabilitar las consultas en paralelo en los servidores donde no es necesario realizar una gran selección (total_worket_time debe reducirse debido a una posible disminución de TCPU y TQCPU). Para hacer esto, debe configurar la función de grado máximo de paralelismo en '1' para que solo funcione un procesador.
    Además, puede usar otros marcos para construir un sistema que determine el rendimiento de alta velocidad de las bases de datos . Es importante comprender cómo funcionan estos marcos y cómo interpretar los números recuperados.

En cuanto al desarrollo y modificación de índices, a saber, índices agrupados, el punto principal es comprender cómo se establece la lógica de los índices y cómo funciona.

Tenga en cuenta que las claves primarias y agrupadas no significan lo mismo:

Una clave principal es una columna o un conjunto de columnas, que hacen que un registro sea único en la tabla. Para la clave principal, puede crear un índice agrupado o no agrupado único. La clave principal se utiliza en otras tablas como clave externa para proporcionar integridad de datos.

Un índice agrupado es un árbol B o su modificación. Las hojas contienen datos en sí, mientras que los nodos contienen información de índice. Además, un índice agrupado también puede no ser único. Aún así, lo recomiendo por ser único.

Me gustaría recordar que un árbol B es una estructura que almacena datos en el orden filtrado por un índice agrupado. Por lo tanto, es importante agrupar los campos seleccionados como un índice agrupado en orden ascendente o descendente. Para un índice agrupado, puede usar columnas de número entero (identidad), así como datos y tiempo. Aun así, las columnas como el identificador único no son adecuadas, ya que esta última conducirá a la reestructuración regular de un árbol B, lo que aumentará la cantidad de lecturas y registros en un dispositivo de almacenamiento donde se encuentra la base de datos.

Además, debe asegurarse de que el índice se utilice con la vista del sistema sys.dm_db_index_usage_stats.

PD Es necesario verificar si los datos están actualizados en un servidor de respaldo, así como verificar un sistema que sincronice estos datos (por ejemplo, replicaciones).

Lea también:

Automatización de la desfragmentación de índices en bases de datos de MS SQL Server

Recopilación automática de datos de cambios en el esquema de la base de datos en MS SQL Server

Eliminación automática de procesos atascados en MS SQL Server

Solución de problemas de consultas de ejecución prolongada en MS SQL Server

Implementación de un indicador de desempeño