Depende. ha ha.
Você também precisa pensar sobre quais requisitos de perda de dados o cliente deseja para o editor e se já está realizando backups de log (imagino que você esteja).
O espelhamento de banco de dados pode ser definido como zero perda de dados (contanto que o espelhamento permaneça sincronizado), mas dependendo da taxa de geração do log de transações e da largura de banda disponível, aguardando que os registros sejam espelhados no espelho antes as transações podem confirmar no principal podem diminuir a carga de trabalho. Depende de que tipo de transações você está fazendo (longo ou curto) se isso terá um efeito perceptível no tempo total de resposta.
Com o envio de log, é apenas backup-copy-restore, repeat. Portanto, se você já estiver fazendo backups de log, não afetará o desempenho. Se você não estiver acostumado a fazer backups de log, poderá encontrar problemas com o gerenciamento do tamanho do log de transações.
Lembre-se de que o espelhamento requer o modelo de recuperação FULL, para que ele possa afetar a manutenção do banco de dados, especialmente se você estiver acostumado a usar o modelo de recuperação BULK_LOGGED. Dependendo da largura de banda da rede disponível, isso também pode levar a problemas de gerenciamento de tamanho de log.
Ambos exigem largura de banda de rede, mas de maneiras diferentes. O envio de logs é uma explosão toda vez que um backup de log é copiado, o espelhamento de banco de dados é mais sustentado, obviamente dependendo da taxa de geração de log novamente. Eu precisaria saber muito mais para saber se a quantidade de largura de banda extra necessária para qualquer um deles afetaria o movimento dos dados no fluxo de replicação e afetaria a latência lá.
Com o envio de logs, você teria que fazer failover manualmente para o envio de logs secundário no caso de uma falha, e existe a possibilidade de perda de dados (todos os dados desde o último backup de log copiado do primário). E então você precisaria dar o pontapé inicial novamente.
Com o espelhamento de banco de dados, você pode configurá-lo para failover automaticamente e pode definir especificamente o parceiro de failover nas tarefas do agente de replicação para inicializar automaticamente no novo principal (que também é o novo editor). A dificuldade é garantir que o failover de espelhamento de banco de dados não ocorra antes que o failover de cluster local aconteça. Você pode fazer isso alterando o valor de tempo limite do parceiro de espelhamento. Eu escrevi sobre isso em link .
Eu escrevi um whitepaper para a Microsoft que descreve como usar o espelhamento e a replicação transacional em conjunto: veja link .
Se todas as outras coisas forem iguais, recomendo o espelhamento de banco de dados devido à facilidade de gerenciamento com potencial para menos dataloss. Você pode ter alguns outros requisitos que eu não estou ciente de que impediria isso.
Espero que isso ajude.