Os backups do SQL são executados mais rapidamente se você definir os bancos de dados como somente leitura primeiro?

2

Eu tenho que fazer um backup de todos os bancos de dados de volta para trás (3,25 GB de dados para todos os arquivos .BAK combinados).

Será mais rápido se eu configurar o script para definir o banco de dados como somente leitura antes de fazer o backup?

Estou usando a opção RESTORE VERIFYONLY para verificar a integridade do backup. Eu também gostaria de saber se há algo que possa acelerar esse processo? Descobri que leva mais tempo do que o backup real!

    
por Michael 10.08.2015 / 18:28

3 respostas

2

Configurar para READ ONLY pode ajudá-lo na medida em que você estiver removendo uma gota de água do oceano.

Os backups levam em conta transações ativas , durante o tempo em que o backup está sendo feito.
Isso significa que sim, quando você coloca seu banco de dados em READ ONLY , você está removendo um pouquinho de sobrecarga.
O que tecnicamente ajuda, mas realmente não vale a pena.

Melhorar o desempenho dos backups é território bem conhecido .
Há uma abundância de posts de blogs e até mesmo um artigo sobre como melhorar o desempenho de seus backups. Nenhuma dessas menções é lida apenas porque honestamente você não notará qualquer diferença.

Para melhorar o desempenho de seus backups:

  1. Use várias mídias ou dispositivos
  2. Opções de otimização de pesquisa para seu tipo específico de backup.
    Os backups completos e diferenciais têm otimizações diferentes dos backups de log, e ainda otimizações diferentes da restauração do backup.
  3. Melhorar o desempenho de leitura na sua plataforma de origem
  4. Aprimore o desempenho de gravação em sua plataforma de destino

Então, para recapitular:
Sim, ajuda, mas não o suficiente para ser mensurável por um ser humano sadio.
Existem maneiras de melhorar o desempenho do backup, tente investigar isso.

    
por 03.09.2015 / 12:55
1

A configuração para somente leitura não ajudará você. Você também criaria tempo de inatividade para qualquer aplicativo que precise de acesso de gravação.

Veja onde está o seu gargalo agora. Na maioria das vezes, é uma das duas coisas.

CPU é o gargalo: não comprima seu backup.
O disco é o gargalo: comprima seu backup.

Se você quiser mergulhar mais fundo, execute este script TSQL enquanto o backup estiver em execução:

SELECT command,
            sh.text,
            start_time,
            percent_complete,
            CAST(((DATEDIFF(s,start_time,GetDate()))/3600) as varchar) + ' hour(s), '
                  + CAST((DATEDIFF(s,start_time,GetDate())%3600)/60 as varchar) + 'min, '
                  + CAST((DATEDIFF(s,start_time,GetDate())%60) as varchar) + ' sec' as running_time,
            CAST((estimated_completion_time/3600000) as varchar) + ' hour(s), '
                  + CAST((estimated_completion_time %3600000)/60000 as varchar) + 'min, '
                  + CAST((estimated_completion_time %60000)/1000 as varchar) + ' sec' as est_time_to_go,
            dateadd(second,estimated_completion_time/1000, getdate()) as est_completion_time,
            status, blocking_session_id, wait_type, wait_time, last_wait_type, wait_resource, reads, writes, cpu_time 
FROM sys.dm_exec_requests re
CROSS APPLY sys.dm_exec_sql_text(re.sql_handle) sh
WHERE re.command in ('RESTORE DATABASE', 'BACKUP DATABASE', 'RESTORE LOG', 'BACKUP LOG')

(o percent_complete não funcionará em 2014, ainda precisa encontrar uma solução para isso).

Na coluna wait_type , você verá o que está causando a espera do backup. Você pode consultá-lo em esta lista . Se tiver que esperar por outro processo, ele será exibido em blocking_session_id . Você pode obter mais detalhes sobre esse processo com sp_who2 xxx .

Se o seu servidor (disco / cpu) puder manipulá-lo, você poderá agendar os backups para serem executados simultaneamente. Se você realmente deseja desempenho, faça backup para vários arquivos, distribuídos em vários discos.

    
por 03.09.2015 / 12:06
-2

O @BartDeVos está certo ao dizer que depende do gargalo, mas ele perdeu o ponto chave, ou seja, se os bloqueios de gravação concorrentes são o seu gargalo, então sim, fazer o banco de dados somente de leitura pode ajudar. (e se não, então não se preocupe com isso).

Meu conhecimento de banco de dados não é com produtos Microsoft, então não posso comentar sobre o mecanismo específico que você está usando, e há espaço para uma grande diferença nos detalhes de implementação entre os mecanismos de banco de dados e sistemas de backup.

EDIT. Leia os comentários. Se o sistema de backup usado for o assumido pelos outros respondentes, a velocidade do backup não será afetada, e acredito que a referência do OP a .bak arquivos seja compatível com isso.

    
por 03.09.2015 / 12:19