Cette question comporte deux parties: quand ajouter un nouveau FILEGROUP et quand ajouter un nouveau FILE dans un groupe de fichiers. Parlons d'abord de la théorie:
Mark a raison sur la principale raison d'être de la performance.
La raison secondaire est la reprise après sinistre. Avec SQL Server 2005 et versions ultérieures, vous pouvez effectuer des restaurations de groupes de fichiers. En cas de catastrophe, vous pouvez d'abord restaurer uniquement votre groupe de fichiers principal et mettre la base de données partiellement en ligne pour les requêtes. Les utilisateurs peuvent exécuter des requêtes pendant que vous restaurez d'autres groupes de fichiers. Ceci est utile pour les bases de données contenant une grande quantité de données historiques qui peuvent ne pas être nécessaires immédiatement, ou les entrepôts de données qui doivent charger des données dans les tables actuelles sans avoir besoin de données historiques pour l'accès.
Une autre raison est le profil de lecture / écriture de groupes de données. Si vous avez des données qui sont constamment écrites et d'autres données qui nécessitent une activité de lecture intense, vous pouvez créer différents types de stockage pour répondre à ces besoins. Vous pouvez mettre les trucs lourds sur le raid 10 et laisser les trucs biaisés en lecture sur le raid 5 moins cher.
Parlons maintenant des fichiers par rapport aux groupes de fichiers. Lorsque vous placez des objets dans SQL Server, vous devez les placer au niveau du groupe de fichiers. Vous pouvez atterrir une table ou un index dans un groupe de fichiers, mais vous ne pouvez pas choisir un fichier spécifique. Donc, tout ce dont nous avons discuté jusqu'à présent concernait l'ajout d'un groupe de fichiers - mais quand ajoutez-vous un fichier?
Si vous concevez du stockage et que vous disposez de 80 disques durs, vous pouvez le répartir de plusieurs manières:
- Un pool de 80 disques
- Deux pools de 40 disques
- Quatre pools de 20 disques, etc ...
Différents sous-systèmes de stockage ont des profils de performances différents. J'ai travaillé avec certains réseaux SAN qui fonctionnaient le mieux avec des baies de disques 12-16, et tout ce qui était plus grand que cela n'a pas amélioré les performances. Un autre exemple est celui des SAN avec multichemin: si vous avez plusieurs HBA connectant votre serveur à votre stockage, et si votre logiciel de multichemin n'est pas réellement actif / actif, vous devrez peut-être une baie par chemin pour répartir la charge. Quatre chemins, quatre pools de lecteurs obtiendront de meilleures performances sur ces types de lecteurs.
Dans ces cas, vous vous retrouvez avec quatre tableaux différents, quatre lecteurs différents sous Windows (sauf si vous utilisez des points de montage, et même alors ce sont des dossiers différents) et vous aurez besoin de quatre fichiers distincts dans SQL Server. Ces fichiers séparés peuvent être dans le même groupe de fichiers.