Quais são as implicações de desempenho para usar a replicação do SQL Server?

3
  • Quais são os efeitos adversos no uso da replicação
  • Quais são alguns exemplos de quando a replicação é benéfica
por squillman 21.05.2009 / 15:54

3 respostas

15

Para adicionar mais sobre replicação transacional:

  • ele usa um trabalho de leitor de log do SQL Agent para coletar transações confirmadas do log de transações do banco de dados de publicação. Isso significa que o log não pode ser limpo até que os registros de log tenham sido lidos. Se a periodicidade do agente de leitura de log for alterada, seu log poderá aumentar inesperadamente. O agente de leitura de log também pode causar contenção no log de transações em sistemas OLTP de alto volume, dependendo do seu subsistema de E / S, é claro.
  • A replicação
  • não garante zero perda de dados, pois há latência envolvida na leitura dos registros de log e na sua passagem pelo distribuidor para o (s) assinante (s). Para zero perda de dados, observe o espelhamento de banco de dados síncrono ou a replicação SAN síncrona
  • A replicação ponto a ponto
  • é uma boa maneira de expandir uma carga de trabalho de consulta e também pode adicionar alguma redundância aos seus dados
  • você precisa fazer um design de esquema cuidadoso com peer-to-peer para evitar colisões causadas por alterações semelhantes em nós diferentes. Não use identidades particionadas para isso. Use uma chave substituta composta (por exemplo, identificador de nó + bigint)
  • com peer-to-peer, pode ser difícil adicionar redundância extra aos vários nós na topologia. O editor pode ser espelhado, o assinante pode ser espelhado (razoavelmente fácil em 2008, não tão facilmente em 2005), mas o distribuidor não pode. Deve ser agrupado para adicionar redundância.

Apenas alguns pensamentos. Você também pode fazer o checkout do whitepaper sobre o espelhamento + repl que escrevi no ano passado, em link

Edit: ok - é hora do almoço e eu tenho mais alguns para adicionar:

  • replicação ponto-a-ponto: em 2005, se você quiser alterar a topologia (adicionar ou remover nós), terá que desativar a topologia inteira. Em 2008 você não precisa.
  • A replicação ponto a ponto
  • não tem detecção de conflitos até 2008, mas mesmo assim a resolução de conflitos é bastante falsa - o nó com a ID mais alta (chamada de ID de origem do peer) ganha - talvez não o que você deseja.
  • replicação ponto a ponto: todos os nós veem todas as alterações dos outros nós. Isso significa que, em uma topologia de três vias, por exemplo, Seattle, Londres, Tóquio - se Seattle cair, Londres e Tóquio continuarão. Se Tóquio, em seguida, desce e Seattle fica on-line, ele receberá todas as atualizações de Londres de Londres e todas as atualizações de Tóquio que Londres conhece, de Londres. Bem legal.
  • não há nenhuma forma de detecção de falha ou failover automático com replicação. Talvez olhe para espelhamento em vez disso. Eu acho que você poderia usar alguma forma de NLB.

Ao escolher qualquer tipo de solução de HA (bom momento, já que estou ensinando uma classe HA para DBAs internos da Microsoft atualmente), é necessário começar com a análise de requisitos antes de avaliar as tecnologias. É um pouco difícil dar recomendações sem conhecer todas as suas necessidades.

Eu fiz um blog sobre perguntas que você deve se fazer ao criar uma estratégia de HA: veja link

Edite novamente:

  • Um exemplo de seu uso: vários servidores na camada de dados com balanceamento de carga de nível médio. Ponto-a-ponto permite que todos os nós mantenham (eventualmente) em sincronia.
  • Problema desagradável: se um usuário é roteado para o nó 1 e faz uma transação, quanto tempo antes que os dados sejam replicados para os outros nós, como a latência de repl pode variar? Se o usuário se conectar ao serviço novamente, para qual nó a roteará? O mesmo nó de antes ou que passou tempo suficiente para poder rotear com segurança para qualquer nó e garantir que a transação anterior que ela fez foi replicada para todos os nós?

ok - não há mais edições! : -)

    
por 21.05.2009 / 16:57
2

A replicação é uma tecnologia bastante diversificada e pode ser usada para atender a vários cenários diferentes, cuja escolha determinará o tipo específico de replicação implementado.

Por exemplo, a replicação de mesclagem pode ser usada para suportar o processamento distribuído, distribuindo a carga de trabalho de um aplicativo por vários servidores, ou seja, arquiteturas de processamento distribuídas.

A replicação de mesclagem geralmente requer um aplicativo que esteja relativamente ciente de seu ambiente. Técnicas como a resolução de conflitos também devem ser levadas em consideração para garantir a consistência dos dados em todo o ambiente integrado.

A replicação transacional pode ser usada de maneira semelhante ao envio de logs, mas você pode limitar os objetos específicos que são replicados para o assinante. Isso pode ser útil se apenas um subconjunto de tabelas for necessário para fins de relatório.

Para obter uma lista completa das arquiteturas disponíveis, consulte a seguinte referência de replicação da Microsoft.

link

O sabor da replicação que você usa determinará o tipo de problemas que você pode encontrar e precisa considerar. Por exemplo, a replicação de mesclagem requer que as alterações de esquema sejam feitas em seu banco de dados.

Também há considerações de segurança a serem consideradas, por exemplo, se os dados precisarem ser replicados pela Internet pública ou se precisar criptografar as comunicações, etc.

A replicação é um grande tópico, mas espero que essa informação o coloque na direção certa.

    
por 21.05.2009 / 16:33
0

Se você tiver que desligar a replicação por qualquer motivo e reiniciá-la (ou, apenas começando pela primeira vez), ela tende a fazer com que AMBOS os servidores fiquem quase sem resposta durante o processo. Uma vez instalado e funcionando (e deixado sozinho), não é perceptível (pelo menos não para nós).

    
por 21.05.2009 / 16:21