Pourquoi ajouter un utilisateur SQL Server à «Effectuer des tâches de maintenance de volume» améliore tellement la vitesse de redimensionnement de la base de données?

17

Si je veux créer une base de données de 5 Go avec

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%)

cela prend 1 minute sur mon SSD.

Mais quand j'ajoute un utilisateur SQL Server à Perform volume maintenance tasks

entrez la description de l'image ici

cela ne prend que 1 à 2 secondes .

Pourquoi donc? Quelqu'un peut-il m'expliquer quelles en sont les raisons?

Nikolay Kostov
la source
4
Les downvoters peuvent-ils expliquer pourquoi les downvotes ?? Cela ressemble à une belle question pour moi.
Thomas Stringer

Réponses:

26

C'est à cause de l' initialisation instantanée des fichiers . En bref, SQL Server peut bénéficier de ce privilège pour les fichiers de données de base de données (pas les fichiers journaux des transactions). Cela signifie que SQL Server n'a pas à mettre à zéro le ou les fichiers de données lors de l'initialisation.

Sans le privilège "Effectuer des tâches de maintenance de volume" accordé au compte de service SQL, lors de la création de la base de données, SQL Server doit mettre à zéro "test.mdf" et "test_log.ldf".

Avec le jeu d'autorisations de privilège "Effectuer des tâches de maintenance de volume" , SQL Server n'a besoin que de mettre à zéro "test_log.ldf". Une surcharge nettement inférieure, donc une durée minimisée pour les CREATE DATABASEtests.

Références
Comment et pourquoi activer l'initialisation instantanée des fichiers Initialisation
instantanée - Quoi, pourquoi et comment?

Thomas Stringer
la source
cette couture qui est caractéristique est géniale, mais pourquoi la valeur par défaut est-elle désactivée?
ahmed abdelqader
1

Cela n'affectera pas les fichiers .ldf (fichiers journaux), du moins pas selon l'article MS

Pourquoi le faire? La vitesse

Pourquoi NE PAS le faire? Risque de sécurité possible. Quelqu'un pourrait pirater votre boîte et peut-être lire les espaces mémoire non nuls et récupérer ces données. Petit risque, mais toujours un risque. C'est pourquoi il n'est pas activé par défaut.

Explication détaillée: comment et pourquoi activer l'initialisation instantanée des fichiers

Robert Lee
la source
Note au lecteur: Si vous craignez que des personnes piratent votre serveur et lisent d'anciennes données à partir d'un fichier supprimé, laisser IFI désactivé peut être utile, mais ce n'est guère ce que je considérerais suffisant. Et, si vous avez déjà un logiciel qui écrase les fichiers supprimés, vous seriez probablement d'accord pour activer IFI, car ce logiciel aurait déjà mis à zéro l'espace.
RDFozz
Il y a maintenant une case à cocher lors de l'installation (SQL 2016 et ultérieur) pour accorder ce droit au compte de service SQL Server, donc je suppose que les MS sont un peu plus détendus sur le plan de la sécurité également.
Gareth Lyons