O artigo escrito por Paul sobre os internos de backup é excelente e você deve lê-lo. Adicionando ao que os outros disseram e enfatizando parte específica da sua pergunta
Também ouvi dizer que o backup é de thread único, o que significa que ele usa apenas um núcleo, supondo que você faça backup em um único arquivo. Supondo também que você tenha uma máquina multicore, por exemplo, 16 núcleos ou pelo menos um número maior e significativo que um.
A operação de backup, can use parallelism
mas lembre-se de que este não é o paralelismo impulsionado pelo Optimizer no SQL Server, é impulsionada pelo número de discos envolvidos, de onde o backup deve ler o arquivo de dados e onde o backup grava o arquivo de dados e a quantidade de arquivos de backup criados.
Você não pode usar a MAXDOP
dica ao fazer o backup do SQL Server
Você não pode gerar plano de execução no SSMS para operação simples de backup TSQL.
O paralelismo conduzido pelo otimizador de consultas no SQL Server é basicamente para os operadores envolvidos (na verdade, é mais complexo, mas por uma questão de simplicidade, é possível), pois a operação de backup não envolve nenhum operador e, portanto, não pode usar o paralelismo impulsionado pelo otimizador.
Escrevi um artigo no Technet Wiki sobre Backup e paralelismo em que usei exemplos simples para explicar o paralelismo durante o backup do SQL Server. A seguir está a conclusão
Se os arquivos do banco de dados estiverem em vários discos, a operação de backup será iniciada no encadeamento por unidade de dispositivo para ler os dados. Da mesma forma, se a restauração for feita em várias unidades / pontos de montagem, a operação de backup iniciaria um encadeamento por unidade / ponto de montagem
Mesmo se você estiver despejando várias cópias de backup na mesma unidade, teremos um encadeamento por arquivo de backup despejado.
O paralelismo associado ao backup está relacionado às faixas. Cada faixa recebe seu próprio encadeamento de trabalho e essa é realmente a única parte do backup / restauração que se deve considerar como operações paralelas.
O grau máximo de paralelismo não afeta a operação de backup.
Eu tenho uma opinião de especialistas sobre isso de Paul e Bob Dorr.
Então, o que acontece quando um trabalho de backup está em execução? E também existem diferenças significativas para as diferentes versões? por exemplo, 2008,2012 e 2014 (não as licenças).
Eu sugiro que você leia este artigo blog.msdn de Bob Dorr. Alguns pontos importantes que ele enfatizou são
Quando um backup é iniciado, ele cria uma série de buffers, alocados da memória fora do pool de buffers. O destino geralmente é de 4 MB para cada buffer, resultando em aproximadamente 4 a 8 buffers. Detalhes sobre o cálculo estão localizados em: http://support.microsoft.com/kb/904804/en-us
Os buffers são transferidos entre as filas livre e de dados. O leitor puxa um buffer livre, preenche-o com dados e coloca-o na fila de dados. Os gravadores puxam buffers de dados preenchidos da fila de dados, processam o buffer e retornam à lista livre.
Você obtém um gravador por dispositivo de backup, cada um recuperando da fila de dados. Portanto, um comando de backup com quatro (4) especificações de disco terá quatro gravadores e um leitor. O leitor usa E / S assíncrona para acompanhar os gravadores.
Você pode ativar trace flags 3213 and 3605
, os dois não estão documentados; portanto, use-o no ambiente de teste e veja que mensagem interessante é despejada no log de erros do SQL Server. Algo como abaixo apareceria
Memory limit: 249MB
BufferCount: 7
Sets Of Buffers: 1
MaxTransferSize: 1024 KB
Min MaxTransferSize: 64 KB
Total buffer space: 7 MB
Tabular data device count: 1
Fulltext data device count: 0
Filestream device count: 0
TXF device count: 0
Filesystem i/o alignment: 512
Media Buffer count: 7
Media Buffer size: 1024KB
Não estou ciente de alterações significativas no código de backup para várias versões; essas coisas não estão documentadas. Eu sei apenas sobre o aprimoramento introduzido em SQL Server 2012 SP1 Cumulative Update 2,
habilitar backup e restauração do serviço de armazenamento de Blob do Windows Azure do SQL Server usando TSQL ou SMO. Leia aqui