Pero recientemente encontré alguna base de datos en un servidor donde cada base de datos tenía múltiples archivos mdf.
Eso se debe a una convención de nomenclatura incorrecta. Microsoft dice que cada base de datos tiene un archivo de datos primarios, pero eso no significa que solo puede tener un "archivo de datos mdf", la base de datos puede tener muchos archivos de datos con .mdf
extensión, pero solo uno será un archivo de datos primario. Es mejor dar mdf
extensión al archivo de datos primarios y ndf
al archivo de datos secundarios para tener una demarcación adecuada, pero esta no es una regla estricta y rápida, también puede dar la extensión .abc al archivo de datos primarios, por lo que lo que presenció es normal. De hecho, puede dar cualquier extensión que desee.
¿Hay alguna sabiduría en tener múltiples archivos .mdf para una base de datos?
Si te refieres a:
¿Hay alguna sabiduría en tener múltiples archivos primarios para una base de datos?
La respuesta es no, una base de datos solo puede tener un archivo de datos primario.
Pero si te refieres a:
¿Hay alguna sabiduría en tener múltiples archivos de datos (.mdf, .ndf o con un nombre diferente) para una base de datos?
Depende, puede y no puede tener ventaja con múltiples archivos de datos. Si se distribuyen en diferentes unidades físicas (estoy hablando de husillos), vería alguna ventaja con la aplicación de escritura intensiva. Si todos están en las mismas particiones lógicas, no tendrá ninguna ventaja porque subyacentes estarían usando recursos comunes. El uso de archivos y grupos de archivos mejora el rendimiento de la base de datos, ya que permite crear una base de datos en varios discos, múltiples controladores de disco o sistemas RAID (matriz redundante de discos independientes). Por ejemplo, si su computadora tiene cuatro discos, puede crear una base de datos compuesta por tres archivos de datos y un archivo de registro, con un archivo en cada disco. A medida que se accede a los datos, cuatro cabezales de lectura / escritura pueden acceder a los datos en paralelo al mismo tiempo.
Según este artículo de MSDN BOL
Los grupos de archivos usan una estrategia de relleno proporcional en todos los archivos dentro de cada grupo de archivos. A medida que los datos se escriben en el grupo de archivos, el Motor de base de datos de SQL Server escribe una cantidad proporcional al espacio libre en el archivo en cada archivo dentro del grupo de archivos, en lugar de escribir todos los datos en el primer archivo hasta que esté lleno. Luego escribe en el siguiente archivo. Por ejemplo, si el archivo f1 tiene 100 MB libres y el archivo f2 tiene 200 MB libres, se asigna una extensión desde el archivo f1, dos extensiones desde el archivo f2, y así sucesivamente. De esta manera, ambos archivos se llenan casi al mismo tiempo, y se logra una simple división.
Otra ventaja que conozco es considerar una base de datos de 1 TB si tuviera un solo archivo de datos y desea restaurar esta base de datos en otro servidor, es muy poco probable que tenga 1 TB de espacio libre. Ahora, si la misma base de datos se distribuye en diferentes archivos, cada uno con un tamaño de 250 G, se hace más fácil la restauración. Puede que este no sea realmente su escenario, pero ayuda mucho es poco fácil encontrar un servidor con cuatro unidades de 250 G que una unidad de 1 TB
Yo diría que en lugar de muchos archivos de datos, es mejor tener diferentes grupos de archivos, pero nuevamente no hay muchos entornos. Las bases de datos formadas por múltiples grupos de archivos se pueden restaurar por etapas mediante un proceso conocido como restauración gradual. La restauración gradual funciona con todos los modelos de recuperación, pero es más flexible para los modelos completos y de registro masivo que para el modo simple. Los archivos o grupos de archivos en una base de datos se pueden respaldar y restaurar individualmente. Esto le permite restaurar solo los archivos dañados sin tener que restaurar el resto de la base de datos. Los archivos en una copia de seguridad de grupo de archivos se pueden restaurar individualmente o en grupo