Inside SQL Server, Microsoft Press.
Traduction personnelle. But pédagogique.


Les Groupes de Fichiers de Base de Données

Vous pouvez grouper les fichiers de données d'une base dans des groupes de fichiers (filegroup) pour les opérations d'administration et d'allocation. Dans certains cas, les performances peuvent être améliorées en contrôlant le placement des données et des indexes dans des groupes spécifiques sur des disques spécifiques. Trois types de groupes de fichiers sont gérés:

La plupart des bases de données SQL Server ont un seul fichier de données dans un groupe (par défaut). La plupart des utilisateurs ne connaissent pas cette notion de groupe de fichiers.

Les DBAs plus sophistiqués peuvent décider d'avoir différentes tables sur différents lecteurs. Alors, ils ont besoin d'utiliser les groupes de fichiers. La méthode la plus simple est d'utiliser SQL Server Enterprise Manager pour créer la base, sans avoir à connaître la syntaxe des groupes de fichier. Seuls les utilisateurs qui écrivent des scripts avec des groupes multiples ont à en connaître les détails internes.

Vous pouvez utiliser les groupes de fichiers pour permettre la sauvegarde d'une seul partie de la base de données. Cependant, si vous créez un index dans un groupe différent dans lequel la table réside, vous devrez sauvegarder les deux groupes. (Le groupe contenant la table et le groupe contenant l'index). Si vous créez plus d'un index dans un autre groupe, vous devrez les sauvegarder tous. La commande BACKUP détecte toutes ces situations et informe l'utilisateur des groupes minimum à sauvegarder.

Lors de l'ajout d'espace à des objets stockés dans un groupe particulier, la donnée est stockée proportionnellement, ce qui veut dire que si vous avez un fichier dans un groupe avec deux fois plus d'espace libre qu'un autre, le premier aura deux extends (ou unités d'espace) alloués pour chaque extend alloué depuis le second fichier.

Exemple de FILEGROUP

Cet exemple créé un base nommée sales avec trois groupes:

CREATE DATABASE Sales 
ON PRIMARY 
( NAME = SPri1_dat, 
FILENAME = 'c:\mssql7\data\SPri1dat.mdf', 
SIZE = 10, 
MAXSIZE = 50, 
FILEGROWTH = 15% ), 
( NAME = SPri2_dat, 
FILENAME = 'c:\mssql7\data\SPri2dat.mdf', 
SIZE = 10, 
MAXSIZE = 50, 
FILEGROWTH = 15% ), 
FILEGROUP SalesGroup1 
( NAME = SGrp1Fi1_dat, 
FILENAME = 'c:\mssql7\data\SG1Fi1dt.mdf', 
SIZE = 10, 
MAXSIZE = 50, 
FILEGROWTH = 5 ), 
( NAME = SGrp1Fi2_dat, 
FILENAME = 'c:\mssql7\data\SG1Fi2dt.mdf', 
SIZE = 10, 
MAXSIZE = 50, 
FILEGROWTH = 5 ), 
FILEGROUP SalesGroup2 
( NAME = SGrp2Fi1_dat, 
FILENAME = 'c:\mssql7\data\SG2Fi1dt.mdf', 
SIZE = 10, 
MAXSIZE = 50, 
FILEGROWTH = 5 ), 
( NAME = SGrp2Fi2_dat, 
FILENAME = 'c:\mssql7\data\SG2Fi2dt.mdf', 
SIZE = 10, 
MAXSIZE = 50, 
FILEGROWTH = 5 ) 
LOG ON 
( NAME = 'Sales_log', 
FILENAME = 'c:\mssql7\data\saleslog.ldf', 
SIZE = 5MB, 
MAXSIZE = 25MB, 
FILEGROWTH = 5MB )