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
cela ne prend que 1 à 2 secondes .
Pourquoi donc? Quelqu'un peut-il m'expliquer quelles en sont les raisons?
sql-server
performance
Nikolay Kostov
la source
la source
Réponses:
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 DATABASE
tests.Références
Comment et pourquoi activer l'initialisation instantanée des fichiers Initialisation
instantanée - Quoi, pourquoi et comment?
la source
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
la source