O sistema tem um problema de desempenho

O desempenho de replicação pode ser medido ao longo das cinco dimensões seguintes:

  • Latência: a quantidade de tempo necessária para uma alteração de dados ser propagada entre nós em uma topologia de replicação.

  • Taxa de Transferência: a quantidade de atividades de replicação (medida em comandos entregues em um período de tempo) que o sistema pode sustentar com o tempo.

  • Simultaneidade: o número de processos de replicação que podem funcionar simultaneamente em um sistema.

  • Duração de sincronização: quanto tempo uma determinada sincronização precisa para ser completada.

  • Consumo de Recursos: hardware e recursos de rede usados como resultado do processamento de replicação.

A latência e a taxa de transferência são mais relevantes para a replicação transacional, porque os sistemas construídos em uma replicação transacional geralmente requerem baixa latência e alta taxa de transferência. Simultaneidade e duração de sincronização são mais relevantes para a replicação de mesclagem porque os sistemas construídos em replicação de mesclagem freqüentemente têm um grande número de Assinantes, e um Publicador pode ter um número significante de sincronizações simultâneas com esses Assinantes.

Após a replicação ser configurada, recomendamos desenvolver uma linha de base de desempenho, que permitirá determinar como a replicação se comporta com uma carga de trabalho que é típica para aplicativos e topologia. Use o Replication Monitor e Monitor do Sistema para determinar os números típicos para as cinco dimensões de desempenho de replicação listadas anteriormente. Após ter estabelecido os números de linha de base, defina os limites e alertas no Replication Monitor. Para obter mais informações, consulte Monitorando o desempenho com o Replication Monitor, Definindo os limites e avisos no Replication Monitor e Usando alertas para eventos do Replication Agent. Para obter mais informações sobre ferramentas que podem ser usadas para solucionar problemas de replicação, consulte Ferramentas para solução de problemas (Replicação).

Explicação e ação do usuário

O desempenho da replicação é afetado pelos seguintes fatores:

  • Servidor e hardware de rede

  • Design do banco de dados

  • Configuração do Distribuidor

  • Design e opções de publicação

  • Design e uso de filtro

  • Opções de Assinatura

  • Opções de instantâneo

  • Parâmetros de agente

  • Manutenção

Se encontrar um problema de desempenho, é recomendável ler as sugestões nas seções a seguir e aplicar as alterações em áreas que afetem os problemas encontrados. Por exemplo:

  • Se estiver usando replicação de mesclagem e perceber no Replication Monitor que um único artigo filtrado é responsável por uma boa parte do tempo de sincronização: verifique se está usando as opções de filtragem adequadas e se as colunas no filtro estão indexadas.

  • Se você estiver usando replicação transacional e experimentar alta latência ao executar operações em lote em tabelas publicadas: considere replicar a execução de um procedimento armazenado para executar a operação em lote no Assinante.

Todos os tipos de replicação

As áreas seguintes devem ser consideradas para todos os tipos de replicação. Para obter mais informações, consulte Melhorando o desempenho geral da replicação.

  • Servidor e rede

    • Defina a quantidade mínima e máxima de memória alocada no Microsoft Mecanismo de banco de dados do SQL Server.

    • Garanta a alocação adequada de arquivos de dados de banco de dados e arquivos de log. Use uma unidade de disco separada para o log de transação para todos os bancos de dados envolvidos na replicação.

    • Considere adicionar memória aos servidores usados na replicação, particularmente ao Distribuidor.

    • Use computadores com multiprocessadores.

    • Use uma rede rápida. Se a rede for lenta, especifique configurações de rede e parâmetros de agente apropriados. Para obter mais informações, consulte Uma rede lenta está causando problemas.

  • Design do banco de dados

    • Siga as práticas recomendadas para design de banco de dados.

    • Considere definir a opção de banco de dados READ_COMMITTED_SNAPSHOT.

    • Seja cauteloso com a lógica de aplicativo em gatilhos.

    • Limite o uso de tipos de dados LOB (objetos grandes).

  • Design e opções de publicação

    • Publique somente os dados requeridos.

    • Minimize conflitos por design de publicação e comportamento de aplicativo.

    • Use filtros de linha criteriosamente.

    • Reduza os níveis detalhados de agentes de replicação, exceto durante o teste inicial, a monitoração ou a depuração.

  • Opções de Assinatura

    • Use assinaturas pull quando houver um número grande de Assinantes.

    • Considere a reinicialização da assinatura se os Assinantes estiverem muito desatualizados.

  • Opções de instantâneo

    • Execute o Snapshot Agent apenas quando necessário e em períodos de pouca atividade.

    • Use uma única pasta de instantâneo para uma publicação.

    • Coloque a pasta de instantâneo em uma unidade local do Distribuidor que não seja usado para armazenar bancos de dados ou arquivos de log.

    • Ao criar o banco de dados de assinatura no Assinante, considere especificar um modelo de recuperação de registros simples ou com log de operações em massa.

    • Use a pasta de instantâneo alternativo e instantâneos compactados em mídia removíveis para redes que não sejam de banda larga.

    • Use o parâmetro -MaxBCPThreads do Snapshot Agent, Merge Agent e Distribution Agent. Use o parâmetro –UseInprocLoader do Distribution Agent e do Merge Agent.

Replicação transacional

As áreas a seguir devem ser consideradas para replicação transacional. Para obter mais informações, consulte Aprimorando o desempenho da replicação de transação.

  • Design do banco de dados

    • Minimize o tamanho de transação em seu design de aplicativo.
  • Configuração do Distribuidor

    • Configure o Distribuidor em um servidor dedicado.

    • Defina um tamanho apropriado para o banco de dados de distribuição.

  • Design e opções de publicação

    • Replique a execução de procedimento armazenado ao fazer atualizações em lote em tabelas publicadas.

    • Espalhe os artigos por várias publicações.

  • Opções de Assinatura

    • Use agentes independentes ao invés de agentes compartilhados se tiver várias publicações no mesmo Publicador (esse é o comportamento padrão).

    • Execute os agentes continuamente em vez de em horários muito freqüentes.

  • Parâmetros de agente

    • Use o parâmetro ––MaxCmdsInTran para o Log Reader Agent.

    • Use o parâmetro –SubcriptionStreams para o Distribution Agent.

    • Aumente o valor do parâmetro -ReadBatchSize para o Log Reader Agent.

    • Aumente o valor do parâmetro -CommitBatchSize para o Distribution Agent.

    • Reduza o valor do parâmetro -PollingInterval para o Log Reader Agent.

Replicação de mesclagem

As áreas seguintes devem ser consideradas para replicação de mesclagem. Para obter mais informações, consulte Aprimorando o desempenho de replicação de mesclagem.

  • Design do banco de dados

    • Colunas de índice usadas em filtros de linha e filtros de junção.

    • Considere tabelas super normalizadas que incluam tipos de dados LOB (objeto grande).

  • Design de publicação

    • Use um nível de compatibilidade de publicação de 90RTM (SQL Server 2005) ou uma versão posterior.

    • Use configurações de retenção de publicação apropriadas.

    • Use artigos de somente download nessas tabelas que só são alteradas no Publicador.

  • Design e uso de filtro

    • Limite a complexidade das cláusulas de filtro de linha.

    • Use partições pré-computadas com filtros com parâmetros (esse recurso é usado por padrão).

    • Use partições não sobrepostas se os dados forem filtrados mas não forem compartilhados entre usuários.

    • Não crie hierarquias de filtro de junção complexas.

    • Defina a opção join_unique_key como 1, se a lógica permitir.

  • Considerações para partições pré-computadas

    • Quando os lotes contiverem muitas alterações de dados, projete o aplicativo cuidadosamente. As alterações de dados na tabela pai em um filtro de junção devem ser feitas antes das alterações correspondentes nas tabelas filha.

    • Quando os lotes contiverem muitas alterações de dados, reduza o número de alterações em um lote e execute o Merge Agent entre lotes. Se isso não puder ser feito, aumente o valor de generation_leveling_threshold para a publicação.

  • Considerações de Assinatura

    • Agendas de sincronização de assinatura irregulares.
  • Parâmetros de agente

    • Se uma assinatura for sincronizada em uma conexão rápida e as alterações forem enviadas do Publicador e Assinante, use o parâmetro –ParallelUploadDownload para o Merge Agent.
  • Opções de instantâneo

    • Crie uma coluna ROWGUIDCOL em tabelas grandes antes de gerar o instantâneo inicial.

    • Gere previamente os instantâneos e/ou permita que os Assinantes solicitem a geração e a aplicação de instantâneos da primeira vez que sincronizarem.

  • Manutenção

    • Ocasionalmente, indexe novamente as tabelas do sistema de replicação de mesclagem.

    • Monitore o desempenho de sincronização usando a guia Histórico de Sincronização no Replication Monitor.

Consulte também

Conceitos