Aprimorando o desempenho da replicação de transação

Após considerar as dicas para o de desempenho geral descritas em Aprimorando o Desempenho Geral da Replicação, considere essas áreas adicionais específicas da replicação de transação.

Design de Banco de Dados

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

    Por padrão, a replicação de transação propaga as alterações de acordo com limites da transação. Em transações menores, é menos provável que o Distribution Agent tenha que reenviar a transação devido a problemas de rede. Se for necessário que o agente reenvie uma transação, a quantidade de dados enviada será menor.

Configuração do Distribuidor

  • Configure o Distribuidor em um servidor dedicado.

    Você pode reduzir a sobrecarga de processamento no Publicador configurando um Distribuidor remoto. Para obter mais informações, consulte Configurando a distribuição.

  • Dimensione adequadamente o banco de dados de distribuição.

    Teste a replicação com uma carga típica para seu sistema para determinar a quantidade de espaço necessária para armazenar comandos. Certifique-se de que o banco de dados seja amplo o suficiente para armazenar comandos, sem ter que aumentá-lo freqüentemente. Para obter mais informações sobre como alterar o tamanho de um banco de dados, consulte ALTER DATABASE (Transact-SQL).

Design de publicação

  • Replique a execução dos procedimentos armazenados ao realizar atualizações em lote em tabelas publicadas.

    Se tiver atualizações em lote que afetem ocasionalmente um grande número de linhas no Assinante, você deve considerar a atualização da tabela publicada usando um procedimento armazenado, e publicar a execução desse procedimento. Ao invés de enviar uma atualização ou excluir cada linha afetada, o Distribution Agent executa o mesmo procedimento no Assinante, com os mesmos valores de parâmetros. Para obter mais informações, consulte Publicando execução de procedimento armazenado em replicação de transação.

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

    Se não puder usar o parâmetro - SubscriptionStreams (descrito mais adiante neste tópico), considere a criação de várias publicações. Espalhar os artigos por essas publicações permite à replicação aplicar alterações em paralelo aos Assinantes.

Considerações de Assinatura

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

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

    Definir que os agentes executem continuamente, em vez de criar agendamentos freqüentes (como a cada minuto), melhora o desempenho da replicação, eliminando as interrupções do agente. Quando você define que o Distribution Agent execute continuamente, as alterações são propagadas com uma baixa latência para os demais servidores conectados na topologia. Para obter mais informações, consulte:

Parâmetros do Distribution Agent e do Log Reader Agent

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

    O parâmetro –MaxCmdsInTran especifica o número máximo de instruções agrupadas em uma transação à medida que o Log Reader grava comandos no banco de dados de distribuição. O uso desse parâmetro permite que o Log Reader Agent e o Distribution Agent dividam transações volumosas (consistindo em muitos comandos) no Publicador em várias transações menores, ao aplicar os comandos no Assinante. A especificação desse parâmetro pode reduzir a contenção no Distribuidor e pode reduzir a latência entre o Publicador e o Assinante. Como a transação original é aplicada em unidades menores, o Assinante pode acessar linhas de uma transação lógica do Publicador antes do fim da transação original, O padrão é 0, que preserva os limites de transação do Publicador. Esse parâmetro não se aplica aos Editores Oracle.

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

    O parâmetro –SubscriptionStreams pode melhorar significativamente a taxa de transferência agregada do processamento. Ele permite várias conexões a um Assinante para aplicar lotes de alterações em paralelo, mantendo presentes, ao mesmo tempo, várias características transacionais, quando for usar um thread único. Se uma das conexões falhar na execução ou na confirmação, todas as conexões abortarão o lote atual, e o agente usará um fluxo único para repetir os lotes com falha. Antes de concluir a fase de repetição, poderá haver inconsistências transacionais temporárias no Assinante. Após os lotes com falha serem confirmados com êxito, o Assinante é levado de volta a um estado de consistência transacional.

    Um valor para esse parâmetro de agente pode ser especificado usando o @ subscriptionstreams do sp_addsubscription (Transact-SQL).

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

    O Log Reader Agent e o Distribution Agent dão suporte ao tamanho dos lotes para as operações de leitura e confirmação de transações. O tamanho padrão dos lotes é de 500 transações. O Log Reader Agent lê o número específico de transações do log, mesmo essas estando marcadas ou não, para a replicação. Quando um grande número de transações é gravado em um banco de dados de publicação, mas somente um pequeno subconjunto for marcado para replicação, você deverá usar o parâmetro -ReadBatchSize para aumentar o tamanho do lote de leitura do Log Reader Agent. Esse parâmetro não se aplica aos Editores Oracle.

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

    A confirmação de um conjunto de transações tem uma sobrecarga fixa. Ao confirmar um número maior de transações com menor freqüência, a sobrecarga será espalhada em um volume de dados maior. Porém, o benefício em aumentar esse parâmetro é anulado, pois, o custo para aplicar alterações é retido por outros fatores, como o E/S máximo do disco que contém o log. Além disso, existe uma compensação a ser considerada: qualquer falha que faz com que o Distribution Agent se reinicie deverá ser revertida e reaplicar um grande número de transações. Para as redes não confiáveis, um valor inferior pode resultar em menos falhas e em um número menor de transações a serem revertidas e reaplicadas em caso de falha.

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

    O parâmetro - PollingInterval especifica com que freqüência o log de transações de um banco de dados publicado é solicitado em transações a serem replicadas. O padrão é 5 segundos. Se reduzir esse valor, o log é sondado com mais freqüentemente, o que pode resultar em uma menor latência na entrega de transações de um banco de dados de publicação, para o banco de dados de distribuição. Porém, você deve equilibrar a necessidade por uma latência menor com uma carga maior no servidor, devido a uma sondagem mais freqüente.

Os parâmetros de agente podem ser especificados em perfis de agente e na linha de comando. Para obter mais informações, consulte:

Consulte também

Conceitos