Créer une nouvelle base de données avec une grande taille initiale

8

Je souhaite créer une nouvelle base de données avec un fichier de données de 200 .mdfGo ( ) et un fichier journal de 50 Go ( .ldf).

Mais c'est très lent (c'est environ 15 minutes et ça n'a toujours pas été créé). et cela prend beaucoup de temps. Est-ce normal? si oui qu'est-ce que ça fait qui prend du temps? puis-je améliorer sa vitesse de création?

J'utilise SQL Server 2008 R2, Windows Server 2008R2, 16 Go de RAM (que j'ai limité à 12 Go en ssms) et Core i7 Cpu

Mehrdad Kamelzadeh
la source
2
Pour la création d'une grande base de données, vous êtes beaucoup plus limité par les E / S disque qu'autre chose. Si IFI est activé (conformément aux réponses), vous pouvez ignorer l'initialisation (remise à zéro) du fichier de données, mais peu importe ce que vous avez pour initialiser le fichier journal. Si vous utilisez un disque spinny grand public qui peut prendre jusqu'à une demi-heure pour le fichier journal seul.
Simon Righarts

Réponses:

17

À moins que vous n'utilisiez l' initialisation instantanée des fichiers , SQL Server doit mettre à zéro tous les secteurs pour les fichiers. C'est un processus très long, en particulier pour 250 Go (données + journal). Afin d'accélérer les choses, activez cette fonctionnalité, puis SQL Server ne mettra pas à zéro l'espace pour les fichiers de données.

Veuillez noter que SQL Server mettra toujours à zéro le fichier journal , vous serez donc toujours limité par cela. Une autre référence pour l' initialisation du fichier journal

Mike Fal
la source
que se passe-t-il exactement sur le disque dur quand zero out all sectorset pourquoi SQL remet toujours à zéro le fichier journal? quel est l'avantage de faire cela?
Mehrdad Kamelzadeh
Il s'agit du processus d'effacement des données sur votre disque. Fondamentalement, l'initialisation instantanée des fichiers ignore cela. Toutefois, en raison de la façon dont le fichier journal fonctionne en interne, SQL Server doit le remettre à zéro complètement pour l'utiliser. Vous pouvez trouver plus de détails à ce sujet ici .
Mike Fal
@MehrdadKamelzadeh SQL server zeroing out file s'applique UNIQUEMENT aux fichiers de données . Les fichiers journaux ne peuvent pas être initialisés à zéro. Reportez-vous à ( sqlskills.com/blogs/paul/… ). Reportez-vous également à Comment savoir si l'initialisation instantanée est activée? ( sqlskills.com/blogs/paul/… ).
Kin Shah
1
@Kin - Les fichiers journaux doivent être initialisés à zéro, mais avec IFI, vous pouvez ignorer l'initialisation à zéro des fichiers de données.
Simon Righarts
7

Si vous exécutez secpol.mscce qui est la valeur locale Politiques, Attribution des droits utilisateur, Perform Volume Maintenance Tasks?

Mon hypothèse à ce stade est que le compte de service SQL Server n'a pas ce droit et qu'il met donc à zéro le mdf et le LDF. Impossible de contourner le LDF en cours de remise à zéro, mais vous pouvez l'ignorer pour le MDF.

SecPol

Référence - http://timradney.com/2012/05/30/instant-file-initialization-for-sql-server-performance/

billinkc
la source