Partager via


Défragmentation des lecteurs de disque de base de données SQL Server

Cet article fournit des conseils sur la défragmentation des lecteurs de base de données SQL Server.

Version du produit d’origine : SQL Server
Numéro de base de connaissances d’origine : 3195161

Les disques SQL Server doivent-ils être défragmentés au niveau de la couche du système d’exploitation ?

Cela dépend de l’état de fragmentation des lecteurs actuels. En règle générale, cela ne fait pas mal et peut vous aider, en supposant que vous suivez les précautions décrites dans la section Précautions lors de la défragmentation des lecteurs de base de données SQL Server. Le seul négatif est que vous devez arrêter SQL Server , sauf si l’outil de défragmentation prend en charge les fonctionnalités de données transactionnelles. La bonne nouvelle est que, une fois que vous avez exécuté la défragmentation, vous n’avez pas vraiment à le faire à nouveau, sauf si vous avez beaucoup de croissance automatique et d’autres fichiers se déplaçant sur et hors des disques. Veillez à comprendre les stratégies de mise en cache en écriture que l’utilitaire utilise. La mise en cache par un tel utilitaire peut impliquer un cache non soutenu par batterie, et cela peut violer les exigences du protocole WAL.

Plus d’informations

Un défragmenteur de disque déplace tous les fichiers, y compris le fichier de base de données, dans des clusters contigus sur un disque dur. Cela optimise et accélère l’accès aux fichiers. À l’exception du système d’exploitation Windows NT, si vous ne défragmentez pas votre disque dur, le système d’exploitation peut devoir accéder à plusieurs emplacements physiques sur le disque pour récupérer le fichier de base de données, ce qui ralentit l’accès aux fichiers.

Étant donné que l’accès aux données physiques est la partie la plus coûteuse d’une requête d’E/S, la défragmentation peut fournir des gains de performances pour SQL Server et d’autres applications. Le positionnement des blocs de données proches les uns des autres réduit les exigences d’opération d’E/S.

Divers utilitaires de défragmentation sont disponibles sur le marché aujourd’hui. Certains utilitaires activent la défragmentation sur les fichiers ouverts, tandis que d’autres nécessitent une défragmentation de fichier fermé ou fonctionnent mieux lorsqu’ils sont utilisés dans des conditions de fichier fermé. En outre, certains utilitaires ont des fonctionnalités transactionnelles, tandis que d’autres ne le font pas.

Précautions lorsque vous défragmentez les lecteurs de base de données SQL Server

Lorsque vous évaluez un utilitaire de défragmentation à utiliser avec SQL Server, assurez-vous que l’utilitaire fournit des fonctionnalités de données transactionnelles. Plus précisément, choisissez un utilitaire de défragmentation qui fournit les fonctionnalités de données transactionnelles suivantes :

  • Le secteur d’origine n’est pas considéré comme déplacé tant que le nouveau secteur n’a pas été correctement établi et que les données ont été correctement copiées.

  • L’utilitaire protège contre une défaillance système, telle qu’une panne de courant, de manière sécurisée qui conserve les fichiers logiquement et physiquement intacts. Pour garantir l’intégrité des données, un test pull-the-plug est vivement recommandé lorsqu’un utilitaire de défragmentation s’exécute sur un fichier SQL Server.

  • Le protocole WAL (Write-Ahead Logging) nécessite la prévention des réécritures du secteur pour éviter toute perte de données. L’utilitaire doit conserver l’intégrité physique du fichier tant qu’il effectue tout déplacement de données. L’utilitaire doit fonctionner sur les limites du secteur de manière transactionnelle pour conserver les fichiers SQL Server intacts.

  • L’utilitaire doit fournir des mécanismes de verrouillage appropriés pour garantir que le fichier conserve une image cohérente pour toutes les modifications. Par exemple, l’utilitaire doit s’assurer que le secteur d’origine ne peut pas être modifié lorsqu’il est copié dans un nouvel emplacement. Si des modifications ont été autorisées, l’utilitaire de défragmentation peut perdre l’écriture.

Les défragmenteurs de disque critiques qui ne fournissent pas ces fonctionnalités de données transactionnelles ne doivent pas être utilisés, sauf si l’instance SQL Server utilisant les disques à défragmenter a été arrêtée afin que vous ne défragmentiez pas les fichiers de base de données ouverts.

La défragmentation open-file soulève plusieurs problèmes possibles que la défragmentation de fichier fermé ne pose généralement pas :

  • La défragmentation d’un fichier ouvert affecte les performances. Les utilitaires de défragmentation peuvent verrouiller des sections du fichier, empêchant SQL Server d’effectuer une opération de lecture ou d’écriture. Cela peut affecter l’accès concurrentiel du serveur qui exécute SQL Server. Contactez le fabricant de l’outil de défragmentation pour savoir comment les fichiers sont verrouillés et comment cela peut affecter la concurrence SQL Server.

  • La défragmentation des fichiers ouverts peut affecter la mise en cache et l’ordre d’écriture. Les utilitaires open-file nécessitent des composants de chemin d’E/S ; ces composants ne doivent pas modifier l’ordre ou la nature prévue de l’opération d’écriture. Si les locataires de protocole WAL ou d’écriture sont rompus, les dommages de base de données sont susceptibles de se produire. La base de données et tous les fichiers associés sont considérés comme une entité unique. (Cela est abordé dans de nombreux articles de la Base de connaissances Microsoft, la documentation en ligne de SQL Server et divers livres blancs.) Toutes les écritures doivent conserver les séquences d’ordre d’écriture d’origine et les fonctionnalités d’écriture directe.

Recommandations

  • Défragmentez le volume NTFS, sauf s’il a été mis en forme, avant de créer une base de données ou de déplacer des bases de données existantes vers le volume.
  • Assurez-vous de planifier et de dimensionner correctement vos fichiers journaux et données SQL lorsque la base de données est créée pour la première fois.
  • Créez vos journaux de transactions antérieurs à SQL Server 2014 avec la croissance automatique à l’esprit s’il sera utilisé.
  • Défragmentez le disque ou les disques sur lesquels résident vos journaux de transactions. Cela empêche la fragmentation des fichiers externes du journal des transactions. Ce problème peut se produire si vos fichiers ont eu beaucoup de croissance automatique ou s’il ne s’agit pas d’un disque dédié qui contient de nombreuses bases de données, journaux ou autres fichiers qui ont été modifiés. Dans ce cas, les fichiers (y compris le fichier journal des transactions) peuvent être entrelacés et fragmentés.
  • Si vous défragmentez des lecteurs de base de données qui sont des disques de cluster, les disques de cluster doivent être configurés pour suspendre la surveillance de l’intégrité (également appelée mode maintenance).
  • Pour réduire la fragmentation, ne réduisez pas vos fichiers de base de données. En outre, augmentez-les manuellement en tailles qui réduisent l’activité de croissance.
  • Conservez vos fichiers de base de données sur des disques dédiés.
  • Effectuez une sauvegarde complète avant de défragmenter ces emplacements qui contiennent des fichiers de base de données et de sauvegarde SQL Server.

References