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 por seu tamanho. Este banco de dados será usado apenas como somente leitura.
Estamos procurando um hardware mais rápido, mas de qualquer forma estou tentando encontrar a maneira mais eficiente de trabalhar com o banco de dados. Este banco de dados deve ser atualizado todas as noites a partir de um banco de dados mestre e o tempo de inatividade deve ser mínimo. O banco de dados mestre é mantido por terceiros.
Estou tentando encontrar a melhor maneira de atualizar o banco de dados com eficiência todas as noites, mas não estou tendo muita sorte. Examinei os backups diferenciais e de log de transações, mas para aplicar qualquer um deles, um backup completo do banco de dados deve ser restaurado primeiro. No meu caso, isso anula completamente o propósito do backup diferencial, pois não me poupará nenhum tempo de inatividade. Eu poderia muito bem fazer um backup completo no banco de dados mestre todas as noites e simplesmente restaurar o backup completo e isso seria mais rápido.
Eu esperava encontrar uma solução onde pudesse fazer um backup completo uma vez (ou talvez uma vez por mês) e, a partir de então, simplesmente aplicar algum tipo de backup incremental (com base no backup completo original) que se complementam. . Isso reduziria ao mínimo o tempo de inatividade, já que, uma vez feito o primeiro backup completo, eu aplicaria apenas os backups incrementais todas as noites. Eu simplesmente reconstruiria o índice após cada backup "incremental" para aumentar a velocidade. Não tive sucesso em encontrar nenhuma solução verdadeiramente viável como esta.
Tentei fazer uma restauração completa COM STANDBY em um banco de dados de teste e dessa forma pude consultar os dados e depois ainda aplicar o log de transações e apenas um log de transações. Este foi um sucesso limitado, já que não sou capaz de fazer coisas como adicionar um índice, pois isso é tecnicamente gravar no banco de dados. No entanto, isso está muito próximo do que procuro, pois os dados em si serão somente leitura. Existe alguma solução destinada a funcionar assim? Prefiro evitar fazer isso com a opção STANDBY, pois ela não deve ser usada dessa forma.
Agora estou mergulhando e pesquisando bastante sobre backups e desempenho de banco de dados, lendo constantemente o MSDN - no entanto, parece que essa solução não é uma opção. Pensei em perguntar 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 performance, pois nunca trabalhei com um banco de dados desse tamanho.
Receio que a replicação possa ser a única resposta.
Responder1
O envio de logs atende à nossa necessidade de manter o banco de dados principal (300 GB) disponível com os logs enviados para uma cópia standby em outro servidor. Os logs de transações são aplicados a cada 15 minutos. Nossos relatórios utilizam a cópia de reserva.