Mais récemment, je suis tombé sur une base de données sur un serveur où chaque base de données avait plusieurs fichiers mdf.
Cela est dû à une convention de dénomination incorrecte. Microsoft dit que chaque base de données a un fichier de données principal mais cela ne signifie pas qu'elle ne peut avoir qu'un seul "fichier de données mdf", la base de données peut avoir de nombreux fichiers de données avec une .mdf
extension mais un seul sera le fichier de données principal. Il est préférable de donner une mdf
extension au fichier de données principal et ndf
au fichier de données secondaire pour avoir une démarcation correcte, mais ce n'est pas une règle stricte et rapide, vous pouvez également donner l'extension .abc au fichier de données principal, de sorte que ce dont vous avez été témoin est normal. En fait, vous pouvez donner n'importe quelle extension que vous souhaitez.
Est-il judicieux d'avoir plusieurs fichiers .mdf pour une base de données?
Si tu veux dire:
Est-il judicieux d'avoir plusieurs fichiers primaires pour une base de données?
La réponse est non, une base de données ne peut avoir qu'un seul fichier de données principal.
Mais si tu veux dire:
Est-il judicieux d' avoir plusieurs fichiers de données (.mdf, .ndf ou autrement nommé) pour une base de données?
Cela dépend, vous pouvez et ne pouvez pas avoir d'avantage avec plusieurs fichiers de données. S'ils sont répartis sur différents disques physiques (je parle de broches), vous verriez un avantage avec une application intensive en écriture. S'ils sont tous sur les mêmes partitions logiques, cela n'aura aucun avantage car sous-jacents, ils utiliseraient des ressources communes. L'utilisation de fichiers et de groupes de fichiers améliore les performances de la base de données, car elle permet de créer une base de données sur plusieurs disques, plusieurs contrôleurs de disque ou des systèmes RAID (tableau redondant de disques indépendants). Par exemple, si votre ordinateur dispose de quatre disques, vous pouvez créer une base de données composée de trois fichiers de données et d'un fichier journal, avec un fichier sur chaque disque. Lorsque les données sont accessibles, quatre têtes de lecture / écriture peuvent accéder aux données en parallèle en même temps.
Selon cet article MSDN BOL
Les groupes de fichiers utilisent une stratégie de remplissage proportionnel sur tous les fichiers de chaque groupe de fichiers. Lorsque les données sont écrites dans le groupe de fichiers, le moteur de base de données SQL Server écrit une quantité proportionnelle à l'espace libre dans le fichier dans chaque fichier du groupe de fichiers, au lieu d'écrire toutes les données dans le premier fichier jusqu'à ce qu'elles soient complètes. Il écrit ensuite dans le fichier suivant. Par exemple, si le fichier f1 dispose de 100 Mo d'espace libre et le fichier f2 de 200 Mo d'espace libre, une extension est allouée à partir du fichier f1, deux extensions à partir du fichier f2, etc. De cette façon, les deux fichiers deviennent pleins à peu près en même temps et une répartition simple est obtenue.
Un autre avantage que je connais est de considérer une base de données de 1 To si vous avez un seul fichier de données et que vous souhaitez restaurer cette base de données sur un autre serveur, il est très peu probable que vous disposiez de 1 To d'espace libre. Maintenant, si la même base de données est répartie sur différents fichiers ayant chacun une taille de 250 G, la restauration devient plus facile. Ce n'est peut-être pas vraiment votre scénario, mais cela aide beaucoup son peu facile de trouver un serveur avec quatre disques 250 G qu'un disque 1 To
Je dirais qu'au lieu de nombreux fichiers de données, il vaut mieux avoir différents groupes de fichiers, mais là encore, il n'y a pas beaucoup d'environnements. Les bases de données composées de plusieurs groupes de fichiers peuvent être restaurées par étapes par un processus appelé restauration fragmentaire. La restauration fragmentaire fonctionne avec tous les modèles de récupération, mais est plus flexible pour les modèles complets et enregistrés en masse que pour le mode simple. Les fichiers ou groupes de fichiers d'une base de données peuvent être sauvegardés et restaurés individuellement. Cela vous permet de restaurer uniquement les fichiers endommagés sans avoir à restaurer le reste de la base de données. Les fichiers d'une sauvegarde de groupe de fichiers peuvent être restaurés individuellement ou en groupe