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 MicrosoftMecanismo 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.