Mas recentemente me deparei com um banco de dados em um servidor em que cada banco de dados tinha vários arquivos mdf.
Isso ocorre devido à convenção de nomenclatura incorreta. A Microsoft diz que todo banco de dados tem um arquivo de dados primário, mas isso não significa que ele pode ter apenas um "arquivo de dados mdf", o banco de dados pode ter muitos arquivos de dados com .mdf
extensão, mas apenas um será o arquivo de dados primário. É melhor dar mdf
extensão ao arquivo de dados primário e ndf
ao arquivo de dados secundário para ter uma demarcação adequada, mas essa não é uma regra rígida e rápida. Você também pode dar a extensão .abc ao arquivo de dados primário, para que o que você testemunhou seja normal. De fato, você pode dar qualquer extensão que desejar.
Existe alguma sabedoria em ter vários arquivos .mdf para um banco de dados?
Se você diz:
Existe alguma sabedoria em ter vários arquivos principais para um banco de dados?
A resposta é não, um banco de dados pode ter apenas um arquivo de dados primário.
Mas se você quer dizer:
Existe alguma sabedoria em ter vários arquivos de dados (.mdf, .ndf ou nomes diferentes) para um banco de dados?
Depende, você pode e não pode ter vantagem com vários arquivos de dados. Se eles estiverem espalhados por diferentes unidades físicas (estou falando de eixos), você verá alguma vantagem com o aplicativo intensivo de gravação. Se todas estiverem nas mesmas partições lógicas, não haverá vantagem, porque subjacentes elas usariam recursos comuns. O uso de arquivos e grupos de arquivos melhora o desempenho do banco de dados, pois permite a criação de um banco de dados em vários discos, controladores de disco ou sistemas RAID (matriz redundante de discos independentes). Por exemplo, se o seu computador tiver quatro discos, você poderá criar um banco de dados composto por três arquivos de dados e um arquivo de log, com um arquivo em cada disco. À medida que os dados são acessados, quatro cabeças de leitura / gravação podem acessar os dados em paralelo ao mesmo tempo.
Conforme este artigo do MSDN BOL
Os grupos de arquivos usam uma estratégia de preenchimento proporcional em todos os arquivos em cada grupo de arquivos. À medida que os dados são gravados no grupo de arquivos, o Mecanismo de Banco de Dados do SQL Server grava uma quantidade proporcional ao espaço livre no arquivo em cada arquivo dentro do grupo de arquivos, em vez de gravar todos os dados no primeiro arquivo até ficar cheio. Em seguida, ele grava no próximo arquivo. Por exemplo, se o arquivo f1 tiver 100 MB livres e o arquivo f2 tiver 200 MB livres, uma extensão será alocada no arquivo f1, duas extensões no arquivo f2 e assim por diante. Dessa maneira, os dois arquivos ficam cheios aproximadamente ao mesmo tempo e é conseguida uma distribuição simples.
Outra vantagem que eu sei é considerar um banco de dados de 1 TB se você tiver um único arquivo de dados para ele e quiser restaurar esse banco de dados em algum outro servidor; é altamente improvável que você tenha 1 TB de espaço livre. Agora, se o mesmo banco de dados estiver espalhado em arquivos diferentes, cada um com tamanho de 250 G, fica mais fácil a restauração. Esse pode não ser o seu cenário, mas ajuda bastante, é pouco fácil encontrar um servidor com quatro unidades de 250 G do que uma unidade de 1 TB
Eu diria que, em vez de muitos arquivos de dados, é melhor ter grupos de arquivos diferentes, mas novamente não há muitos ambientes. Os bancos de dados compostos por vários grupos de arquivos podem ser restaurados em estágios por um processo conhecido como restauração fragmentada. A restauração fragmentada funciona com todos os modelos de recuperação, mas é mais flexível para os modelos completo e com registro em massa do que para o modo simples. É possível fazer backup e restaurar arquivos ou grupos de arquivos em um banco de dados individualmente. Isso permite restaurar apenas os arquivos danificados sem precisar restaurar o restante do banco de dados. Os arquivos em um backup de grupo de arquivos podem ser restaurados individualmente ou como um grupo