Recebemos relatórios de consultas sendo executadas lentamente ou expirando no início da manhã, e o único trabalho que vejo em execução que acho que poderia afetar isso é nosso trabalho de backup de banco de dados.
O banco de dados em si tem cerca de 300 GB e o trabalho de backup começa às 4h30 e termina pouco depois das 7h. A sintaxe atual do nosso trabalho de backup é:
BACKUP DATABASE [DatabaseName]
TO DISK = N'E:\Database Backups\DatabaseName.Bak'
WITH INIT, NOUNLOAD, NAME = N'DatabaseName.Bak',
NOSKIP, STATS = 10, NOFORMAT
E:\
é uma partição no servidor que contém os bancos de dados e os backups do banco de dados.
Também deve ser notado que este é um servidor virtual, não um servidor autônomo dedicado. Começamos a receber reclamações sobre lentidão durante o processo de backup logo após mudarmos para um servidor virtual, então acho que pode estar relacionado.
Existe uma maneira de executar esse trabalho de backup para que ele não afete o desempenho da consulta durante a execução?
Estamos usando o SQL Server 2005
STATS
opção? Tem certeza de que precisa das outras opções (NOUNLOAD
,NOSKIP
,NOFORMAT
)? Eu não fiz nenhum teste de desempenho extensivo em toda a matriz de opções, mas IMHO você deve usar apenas as opções que você sabe que precisa.Executando restaurações graduais
Exemplo: restauração fragmentada de apenas alguns grupos de arquivos (modelo de recuperação simples)
Este é um problema comum, existem várias soluções e realmente depende do seu ambiente. Vamos percorrê-los:
1- Compressão de backup em tempo real
Em 2008 R1 Backup Compression ficou disponível em Enterprise, em 2008R2 ficou disponível em Standard. Isso é ENORME. Vai lhe poupar MUITO tempo. Se você pode atualizar, vá em frente. Se você não puder, confira o utilitário HyperBak da RedGate , ou Quest LiteSpeed . Ambos têm um teste gratuito.
2- Backups Completos e Diferenciais
Eu herdei um banco de dados de produção de 2 TB, causando muitos tempos limite para uma grande empresa de Internet 24 horas por dia, 7 dias por semana, que trabalhei. Habilitamos backups completos e diferenciais que nos pouparam muito tempo. Eu faria um backup completo no domingo às 12h, quando a atividade estava baixa, e faria as diferenças durante a semana. Isso economizou muito espaço. O trabalho do Diff é diferente dos logs de transação, pois eles trabalham em quais páginas do banco de dados foram alteradas. Todas as páginas alteradas são armazenadas em backup. Assim, você faz uma restauração completa e, em seguida, a restauração diff para adicionar as páginas modificadas.
3- Qual é o seu gargalo?
A análise do gargalo é importante para diagnosticar. Você está fazendo backup na mesma matriz de disco dos seus arquivos de dados? Seus arquivos de dados estão sendo indexados? Qual é o seu DISCO SEC/READ e DISCO SEC/WRITE para os discos de dados durante os backups? Modifiquei os backups para criar 4 arquivos. Cada arquivo tem seu próprio gravador de encadeamento e em nossa SAN funcionou muito bem. Teste, eu economizei 45 minutos criando apenas 4 arquivos de backup. Apenas certifique-se de que suas métricas de disco listadas acima sejam baixas. Obtenha uma linha de base.
4- Replicar para um servidor diferente e fazer backup disso
Este é um pouco avançado. Você precisa ter certeza de que seu banco de dados replicado está atualizado e precisa de monitoramento adequado para isso. Se for, você pode apenas fazer backup do banco de dados replicado.
Você pode usar estes parâmetros:
BLOCKSIZE - Escolha o tamanho 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536. (em KB)
BUFFERCOUNT - Especifica o número total de buffers de E/S a serem usados para a operação de backup. Você pode especificar qualquer número inteiro positivo; no entanto, um grande número de buffers pode causar erros de "memória insuficiente" devido ao espaço de endereço virtual inadequado no processo Sqlservr.exe. - do MSDN
MAXTRNASFERSIZE - É de 65536 bytes (64 KB) a 4194304 bytes (4 MB)
Tente. ele resolveu o problema de tempo limite expirado enquanto db de tamanho grande.