Por que adicionar o usuário do SQL Server a "Executar tarefas de manutenção de volume" melhora tanto a velocidade do redimensionamento do banco de dados?

17

Se eu quiser criar um banco de dados de 5 GB com

CREATE DATABASE [test]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'test', FILENAME = N'E:\2012\test.mdf' , SIZE = 5529600KB , FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'test_log', FILENAME = N'E:\2012\test_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)

leva 1 minuto no meu SSD.

Mas quando adiciono o usuário do SQL Server ao Perform volume maintenance tasks

insira a descrição da imagem aqui

leva apenas 1-2 segundos .

Por que é que? Alguém pode me explicar quais são as razões para isso?

Nikolay Kostov
fonte
4
Os votantes negativos podem explicar por que os votos negativos? Parece-me uma boa pergunta.
Thomas Stringer

Respostas:

26

Isso é devido à inicialização instantânea de arquivos . Em resumo, o SQL Server pode tirar proveito desse privilégio para arquivos de dados do banco de dados (não arquivos de log de transações). O que isso significa é que o SQL Server não precisa zerar o (s) arquivo (s) de dados ao inicializar.

Sem o privilégio "Executar tarefas de manutenção de volume" concedido à conta do Serviço SQL, na criação do banco de dados, o SQL Server precisa zerar "test.mdf" e "test_log.ldf".

Com o conjunto de permissões de privilégio "Executar tarefas de manutenção de volume" , o SQL Server precisa zerar "test_log.ldf". Uma sobrecarga significativamente menor e, portanto, duração minimizada para os CREATE DATABASEtestes.

Referências
Como e por que ativar a inicialização instantânea de arquivos Inicialização
instantânea - O que, por que e como?

Thomas Stringer
fonte
essa costura que é característica é incrível, mas por que o padrão está desativado?
Ahmed abdelqader
1

Isso não afetará os arquivos .ldf (arquivos de log), pelo menos não de acordo com o artigo da MS

Por que fazê-lo? Rapidez

Por que NÃO fazer isso? Possível risco de segurança. Alguém poderia invadir sua caixa e, possivelmente, ler os espaços de memória diferentes de zero e recuperar esses dados. Risco pequeno, mas ainda um risco. É por isso que não está ativado por padrão.

Explicação detalhada: Como e Por que Habilitar a Inicialização Instantânea de Arquivos

Robert Lee
fonte
Nota ao leitor: Se você está preocupado com as pessoas que invadiram seu servidor e leram dados antigos do arquivo excluído, deixar a IFI desativada pode ser útil, mas dificilmente seria o que eu consideraria suficiente. E, se você já possui um software que sobrescreve arquivos excluídos, provavelmente está certo ativar o IFI, pois esse software já deveria ter zerado o espaço.
RDFozz
Agora há uma caixa de seleção durante a instalação (SQL 2016 em diante) para conceder esse direito à conta de serviço do SQL Server, então acho que o MS também é um pouco mais relaxado na área de segurança.
Gareth Lyons