Utilisation des fichiers et des groupes de fichiers

SQL Server mappe une base de données sur un ensemble de fichiers du système d'exploitation. Les données et les informations des journaux ne figurent jamais sur le même fichier ; par ailleurs, les fichiers individuels ne sont utilisés que par une base de données. Les groupes de fichiers sont des collections nommées de fichiers et simplifient les tâches d'administration et de placement des données, telles que les opérations de sauvegarde et de restauration. Pour plus d'informations, consultez Architecture des fichiers et des groupes de fichiers.

Stratégie de remplissage des fichiers et des groupes de fichiers

Dans un groupe de fichiers, le remplissage des fichiers s'effectue selon un mode proportionnel. Le moteur de base de données SQL Server écrit les données en les répartissant entre les fichiers du groupe proportionnellement à l'espace disponible dans chaque fichier, au lieu de remplir un premier fichier. Il écrit ensuite dans le fichier suivant. Par exemple, si le fichier f1 a 100 Mo et le fichier f2 200 Mo d'espace libre, une extension est allouée à partir de f1, deux extensions à partir de f2, et ainsi de suite. De cette façon, les deux fichiers arrivent à peu près en même temps à saturation et le résultat est un entrelacement simple.

Dès que tous les fichiers d'un groupe de fichiers sont remplis, le moteur de base de données accroît automatiquement la taille d'un fichier à la fois, selon le mécanisme de tourniquet (round robin), afin d'y insérer plus de données, à condition que la fonction de croissance automatique de la base de données soit activée. Par exemple, un groupe de fichiers contient trois fichiers définis en mode de croissance automatique. En cas de saturation de tous les fichiers du groupe de fichiers, seul le premier fichier sera étendu. Si le premier fichier est saturé, et qu'il n'est plus possible d'enregistrer des données dans le groupe de fichiers, le deuxième fichier est étendu. Si le deuxième fichier est plein et qu'il n'est plus possible d'enregistrer des données dans le groupe de fichiers, le troisième fichier sera étendu. Si le troisième fichier est plein et qu'il n'est plus possible d'enregistrer des données dans le groupe de fichiers, le premier fichier sera à nouveau étendu, et ainsi de suite.

Amélioration des performances de la base de données

Le recours aux fichiers et aux groupes de fichiers améliore les performances de la base de données car cela permet à celle-ci d'être répartie sur plusieurs disques, contrôleurs de disque ou systèmes RAID. Par exemple, si votre ordinateur est équipé de quatre disques, vous pouvez créer une base de données comprenant trois fichiers de données et un fichier journal que vous distribuerez à raison d'un fichier par disque. Lors des accès aux données, quatre têtes de lecture/écriture travaillent simultanément. Les opérations sur la base de données s'en trouvent donc accélérées. Pour plus d'informations sur les solutions matérielles, consultez Performances de la base de données.

En outre, les fichiers et les groupes de fichiers permettent le placement des données, dans la mesure où une table peut être créée dans un groupe de fichiers spécifique. Les performances s'en trouvent améliorées, puisque les opérations d'entrée/sortie d'une table peuvent être dirigées vers un disque spécifique. Par exemple, une table beaucoup utilisée peut être placée dans un fichier d'un groupe stocké sur un disque, alors qu'une autre table moins sollicitée sera placée dans d'autres fichiers d'un autre groupe stocké sur un deuxième disque.

Implémentation des stratégies de sauvegarde et de restauration

Les bases de données composées de plusieurs groupes de fichiers peuvent être restaurées par phases à l'aide d'un processus appelé « restauration fragmentaire ». La restauration fragmentaire fonctionne dans tous les modes de récupération, mais elle offre davantage de souplesse dans le mode de restauration complète et dans le mode de récupération utilisant les journaux de transactions que dans le mode de récupération simple. Le scénario de restauration fragmentaire comprend les trois phases de restauration : copie de données, restauration par progression et annulation (ou restauration). Pour plus d'informations, consultez Exécution d'une restauration fragmentaire.

Lorsque plusieurs groupes de fichiers sont utilisés, les fichiers d'une base de données peuvent être sauvegardés et restaurés séparément. Dans le mode de récupération simple, les sauvegardes de fichiers ne sont autorisées que pour les fichiers en lecture seule. L'utilisation de sauvegardes de fichiers peut augmenter la vitesse de récupération, car cela vous permet de restaurer uniquement les fichiers endommagés sans restaurer le reste de la base de données. Par exemple, si une base de données est constituée de plusieurs fichiers situés physiquement sur différents disques et qu'un disque est défaillant, seul le fichier du disque défectueux doit être restauré. Pour plus d'informations, consultez BACKUP (Transact-SQL).

Règles pour concevoir des fichiers et des groupes de fichiers

Les règles suivantes s'appliquent aux fichiers et aux groupes de fichiers :

  • Un fichier ou un groupe de fichiers ne peut pas être utilisé par plusieurs bases de données. Par exemple, les fichiers sales.mdf et sales.ndf, qui contiennent des données et des objets de la base de données sales, ne peuvent pas être utilisés par une autre base de données.

  • Un fichier ne peut appartenir qu'à un seul groupe.

  • Les fichiers journaux des transactions ne peuvent jamais faire partie d'un groupe de fichiers.

Recommandations

Voici une série de recommandations générales à suivre lors de l'utilisation de fichiers et de groupes de fichiers :

  • La plupart des bases de données fonctionnent très bien avec un seul fichier de données et un seul fichier journal des transactions.

  • Si vous utilisez plusieurs fichiers, créez un second groupe de fichiers pour les fichiers supplémentaires et utilisez-le comme groupe de fichiers par défaut. Ainsi, le fichier primaire ne contiendra que les objets et les tables système.

  • Pour optimiser les performances, créez les fichiers et les groupes de fichiers sur l'ensemble des disques physiques locaux disponibles. Placez dans des groupes de fichiers différents les objets qui se disputent fortement l'espace disque.

  • Utilisez les groupes de fichiers pour permettre le placement des objets sur des disques physiques spécifiques.

  • Placez dans des groupes différents les tables qui sont utilisées dans les mêmes requêtes jointes. Vous améliorerez ainsi les performances, puisque les opérations d'entrée/sortie de recherche des données jointes se feront en parallèle.

  • Placez dans des groupes de fichiers différents les tables fréquemment consultées et les index non-cluster qui leur appartiennent. Vous améliorerez ainsi les performances, puisque les opérations d'entrée/sortie se feront en parallèle, les fichiers étant situés sur différents disques physiques.

  • Ne placez pas le ou les fichiers journaux de transactions sur le même disque physique que les autres fichiers et groupes de fichiers.