Pergunta

Na empresa que eu trabalho para nós discussão de métodos para reduzir a carga de leitura em nosso banco de dados primário.

Uma opção que tem sido sugerida é a replicação unidirecional de nosso banco de dados primário para um escravo de banco de dados.Aplicativos, em seguida, leia o escravo de banco de dados de e escrever diretamente para o banco de dados primário.Então...

  • Aplicativo Lê A Partir De Escravo
  • Aplicativo Grava Principal
  • Principal Actualizações De Escravo Automaticamente

Quais são os principais prós e contras para este método?

Foi útil?

Solução

Alguns contras:

  • 2 pontos de falha
  • A lógica do aplicativo terá de levar em conta o atraso entre a escrita de alguma coisa, e depois de lê-lo, pois não estar imediatamente disponível a partir do banco de dados secundário

Uma estratégia que eu tenho usado é a tecla enviar dados do relatório para um banco de dados secundário noturno, de normalização-lo no caminho, para que musculoso consultas podem executar no banco de dados em vez de bloqueio de tabelas e roubar os recursos do servidor OLTP.Eu não estou usando formal de armazenamento de dados ou ferramentas de replicação, ao invés de eu identificar o problema consultas que são Ok, sem up-to-the-minute de dados e criar as estruturas de dados no servidor secundário especificamente para essas consultas.

Definitivamente, existem prós para o "replicar tudo" abordagem:

  • Você pode executar qualquer consulta ad-hoc sobre o secundário, pois tem todos os seus dados
  • Se o servidor primário não morre, você pode re-objetivo secundário rapidamente para assumir

Outras dicas

Estamos usando uma forma de replicações, mas não a partir da mesma aplicação.Nossas aplicações são de leitura-escrita para o mestre de banco de dados, os dados são sincronizados para o replca banco de dados e as ferramentas de relatório estiver usando esta réplica.

Não queremos que a nossa aplicação para ler a partir de um banco de dados diferente, portanto, neste cenário gostaria de sugerir o uso de grupos de arquivos e criação de partições no banco de dados mestre.Usando o arquivo de grupos (especialmente em unidades diferentes) e particionamento de arquivos e índices podem ajudar no desempenho de um monte.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top