El sistema tiene un problema de rendimiento

El rendimiento de la replicación se puede medir en las cinco dimensiones siguientes:

  • Latencia: la cantidad de tiempo que se tarda en propagar un cambio de datos entre nodos en una topología de replicación.

  • Rendimiento: la cantidad de actividad de replicación (medida en comandos suministrados durante un período de tiempo) que un sistema puede mantener en el tiempo.

  • Simultaneidad: el número de procesos de replicación que pueden operar simultáneamente en un sistema.

  • Duración de sincronización: el tiempo que tarda en finalizar una sincronización determinada

  • Utilización de recursos: recursos de hardware y de red utilizados como resultado del procesamiento de replicación.

La latencia y el rendimiento son las más relevantes para la replicación transaccional, porque los sistemas basados en la replicación transaccional requieren generalmente latencia baja y alto rendimiento. La simultaneidad y la duración de sincronización son las más relevantes para la replicación de mezcla, porque los sistemas basados en la replicación de mezcla suelen tener un gran número de suscriptores, y un publicador puede tener un número significativo de sincronizaciones simultáneas con estos suscriptores.

Una vez configurada la replicación, se recomienda desarrollar una línea base de rendimiento, lo que permite determinar el comportamiento de la replicación con la carga de trabajo habitual de las aplicaciones y la topología. Utilice el Monitor de replicación y el Monitor de sistema para determinar los valores típicos de las cinco dimensiones del rendimiento de la réplica enumeradas anteriormente: Después de que haya establecido números de línea de base, establezca umbrales y alertas en el Monitor de replicación. Para obtener más información, vea Supervisar el rendimiento con el Monitor de replicación, Establecer umbrales y advertencias en el Monitor de replicación y Usar alertas para los eventos de agente de replicación. Para obtener más información acerca de las herramientas que puede utilizar para solucionar problemas de replicación, vea Herramientas de solución de problemas (replicación).

Explicación y acciones del usuario

El rendimiento de la replicación se ve afectado por los siguientes factores:

  • Hardware de servidor y red

  • Diseño de la base de datos

  • Configuración del distribuidor

  • Diseño y opciones de publicación

  • Diseño y uso de los filtros

  • Opciones de suscripción

  • Opciones de instantáneas

  • Parámetros de agente

  • Mantenimiento

Si se encuentra con un problema de rendimiento, se recomienda leer las sugerencias de las siguientes secciones y aplicar cambios en las áreas que afecten a los problemas que ha encontrado. Por ejemplo:

  • Si está utilizando la replicación de mezcla y observa en el Monitor de réplica que hay un solo artículo filtrado que ocupa un alto porcentaje del tiempo de sincronización, asegúrese de que está utilizando las opciones de filtrado apropiadas y de que las columnas del filtro están indizadas.

  • Si está utilizando la replicación transaccional y experimenta una latencia alta al realizar operaciones por lotes en las tablas publicadas, considere la posibilidad de replicar la ejecución de un procedimiento almacenado para llevar a cabo la operación por lotes en el suscriptor.

Todos los tipos de replicación

Deben tenerse en cuenta las áreas siguientes para todos los tipos de replicación. Para obtener más información, vea Aumentar el rendimiento general de la replicación.

  • Servidor y red

    • Establezca la cantidad mínima y máxima de memoria asignada al Microsoft SQL Server Database Engine (Motor de base de datos de SQL Server).

    • Compruebe que la asignación de los archivos de datos de la base de datos y los archivos de registro sea correcta. Utilice una unidad de disco distinta para el registro de transacciones de todas las bases de datos involucradas en la replicación.

    • Considere la posibilidad de agregar memoria a los servidores que se utilizan en la replicación, en especial al distribuidor.

    • Utilice equipos con varios procesadores.

    • Utilice una red rápida. Si la red es lenta, especifique una configuración de red y parámetros de agente apropiados. Para obtener más información, vea Problemas provocados por una red lenta.

  • Diseño de la base de datos

    • Siga las prácticas recomendadas para el diseño de la base de datos.

    • Considere la posibilidad de establecer la opción READ_COMMITTED_SNAPSHOT de la base de datos.

    • Tenga cuidado con la lógica de la aplicación en los desencadenadores.

    • Limite el uso de tipos de datos de objetos grandes (LOB).

  • Diseño y opciones de publicación

    • Publique únicamente los datos necesarios.

    • Reduzca al mínimo los conflictos a través del diseño de las publicaciones y del comportamiento de la aplicación.

    • Use los filtros de fila de forma razonable.

    • Reduzca el nivel de detalle de los agentes de replicación, excepto durante la prueba inicial, la supervisión o la depuración.

  • Opciones de suscripción

    • Utilice suscripciones de extracción cuando haya un gran número de suscriptores.

    • Considere la posibilidad de reinicializar la suscripción si los suscriptores van muy retrasados.

  • Opciones de instantáneas

    • Ejecute el Agente de instantáneas sólo cuando sea necesario y en horas de poca actividad.

    • Utilice una sola carpeta de instantáneas para cada publicación.

    • Coloque la carpeta de instantáneas en una unidad local del distribuidor que no se utilice para almacenar bases de datos o archivos de registro.

    • Al crear la base de datos de suscripciones en el suscriptor, considere la posibilidad de especificar el modelo de recuperación simple o por medio de registros de operaciones masivas.

    • Utilice una carpeta de instantáneas alternativa e instantáneas comprimidas en medios extraíbles para las redes con poco ancho de banda.

    • Utilice el parámetro –MaxBCPThreads del Agente de instantáneas, el Agente de mezcla y el Agente de distribución. Utilice el parámetro –UseInprocLoader del Agente de distribución y el Agente de mezcla.

Replicación transaccional

Deben tenerse en cuenta las áreas siguientes para la replicación transaccional. Para obtener más información, vea Aumentar el rendimiento de la réplica transaccional.

  • Diseño de la base de datos

    • Reduzca al mínimo el tamaño de la transacción en el diseño de la aplicación.
  • Configuración del distribuidor

    • Configure el distribuidor en un servidor dedicado.

    • Establezca un tamaño apropiado para la base de datos de distribución.

  • Diseño y opciones de publicación

    • Replique la ejecución de procedimientos almacenados en las actualizaciones por lotes de las tablas publicadas.

    • Reparta los artículos entre varias publicaciones.

  • Opciones de suscripción

    • Utilice agentes independientes en lugar de agentes compartidos si tiene varias publicaciones en el mismo publicador (éste es el comportamiento determinado).

    • Ejecute los agentes continuamente en lugar de utilizar programaciones muy frecuentes.

  • Parámetros de agente

    • Utilice el parámetro –MaxCmdsInTran para el Agente de registro del LOG.

    • Utilice el parámetro –SubcriptionStreams para el Agente de distribución.

    • Aumente el valor del parámetro -ReadBatchSize para el Agente de registro del LOG.

    • Aumente el valor del parámetro -CommitBatchSize para el Agente de distribución.

    • Reduzca el valor del parámetro -PollingInterval para el Agente de registro del LOG.

Replicación de mezcla

Deben tenerse en cuenta las áreas siguientes para la replicación de mezcla. Para obtener más información, vea Aumentar el rendimiento de la replicación de mezcla.

  • Diseño de la base de datos

    • Indice las columnas utilizadas en filtros de fila y de combinación.

    • Considere la posibilidad de normalizar en exceso las tablas que incluyan tipos de datos de objetos grandes (LOB).

  • Diseño de la publicación

    • Use un nivel de compatibilidad de la publicación de 90RTM (SQL Server 2005 o una versión posterior).

    • Use una configuración de retención de la publicación apropiada.

    • Use artículos de sólo descarga en las tablas que sólo se modifiquen en el publicador.

  • Diseño y uso de los filtros

    • Limite la complejidad de las cláusulas de los filtros de fila.

    • Use particiones precalculadas con filtros con parámetros (esta característica se utiliza de manera predeterminada).

    • Use particiones no superpuestas si los datos se filtran pero no se comparten entre los usuarios.

    • No cree jerarquías de filtros de combinación complejas.

    • Si la lógica lo permite, establezca la opción join_unique_key en 1.

  • Consideraciones sobre las particiones precalculadas

    • Cuando los lotes incluyan muchos cambios de datos, diseñe la aplicación cuidadosamente. Los cambios en los datos de la tabla primaria de un filtro de combinación deben realizarse antes que los cambios correspondientes de las tablas secundarias.

    • Cuando los lotes incluyan muchos cambios de datos, reduzca el número de cambios de un lote y ejecute el Agente de mezcla entre los distintos lotes. Si esto último no es posible, aumente el valor de generation_leveling_threshold para la publicación.

  • Consideraciones sobre las suscripciones

    • Escalone las programaciones de sincronización de suscripciones.
  • Parámetros de agente

    • Si una suscripción se sincroniza a través de una conexión rápida y los cambios se envían del publicador al suscriptor, utilice el parámetro –ParallelUploadDownload para el Agente de mezcla.
  • Opciones de instantáneas

    • Cree una columna ROWGUIDCOL en las tablas grandes antes de generar la instantánea inicial.

    • Genere previamente las instantáneas o permita a los suscriptores que soliciten la generación y aplicación de instantáneas la primera vez que sincronicen.

  • Mantenimiento

    • Ocasionalmente, vuelva a indizar las tablas del sistema de replicación de mezcla.

    • Supervise el rendimiento de la sincronización mediante la ficha Historial de sincronizaciones del Monitor de replicación.

Vea también

Conceptos