Estou trabalhando em um banco de dados muito grande (mais de 250 shows) com mais de 225 milhões de registros. É difícil trabalhar com o banco de dados simplesmente pelo seu tamanho. Este banco de dados será usado apenas como somente leitura.
Estamos procurando hardware mais rápido, mas de qualquer forma, estou tentando encontrar a maneira mais eficiente de trabalhar com o banco de dados. Esse banco de dados deve ser atualizado todas as noites a partir de um banco de dados mestre e o tempo de inatividade deve ser mantido no mínimo. O banco de dados mestre é mantido por terceiros.
Estou tentando encontrar a melhor maneira de atualizar o banco de dados eficientemente, mas não estou tendo muita sorte. Analisei os backups de log de transações e diferenciais, mas para aplicar qualquer um deles, um backup de banco de dados completo deve ser restaurado primeiro. No meu caso, isso anula completamente o propósito do backup diferencial, já que ele não me salvará em nenhum tempo. Eu poderia muito bem ter um backup completo feito no banco de dados mestre todas as noites e então simplesmente restaurar o backup completo e isso seria mais rápido.
Eu esperava encontrar uma solução na qual eu pudesse ter um backup completo feito uma vez (ou talvez uma vez por mês) e, a partir de então, simplesmente aplicasse algum tipo de backups incrementais (baseados no backup completo original) um no outro. Isso manteria o tempo de inatividade no mínimo, já que uma vez feito o primeiro backup completo, eu aplicaria os backups incrementais somente à noite. Eu simplesmente reconstruir o índice após cada backup "incremental" para velocidade. Eu não fui bem sucedido em encontrar qualquer solução verdadeiramente viável assim.
Eu tentei fazer uma restauração completa WITH STANDBY em um banco de dados de teste e dessa forma eu poderia consultar os dados e depois ainda aplicar o log de transações e somente um log de transações. Este foi um pouco de um sucesso limitado, já que eu não sou capaz de fazer coisas como adicionar um índice, já que é tecnicamente gravar no banco de dados. No entanto, isso é muito parecido com o que estou procurando, pois os dados em si serão somente leitura. Existe alguma solução para funcionar assim? Eu preferiria evitar fazer isso com a opção STANDBY, uma vez que não é para ser usada dessa maneira.
Agora estou mergulhando e pesquisando bastante sobre backups e desempenho de bancos de dados, lendo constantemente o MSDN - no entanto, parece que essa solução não é uma opção. Eu pensei que gostaria de pedir como último recurso - certamente há alguns aqui gerenciando grandes bancos de dados onde seria impraticável fazer uma restauração todas as noites.
Alguma sugestão? Também estou aberto a sugestões / links para páginas sobre desempenho, já que nunca trabalhei com um banco de dados desse tamanho.
Receio que a replicação seja a única resposta.