Já procurei na internet mas não encontrei o que procuro.
O problema/consulta é, pelo que sei, um banco de dados no SQL Server deve ter um arquivo .mdf e talvez alguns arquivos .ndf e um arquivo .log.
Já vi muitos bancos de dados com um mdf e vários arquivos ndf. Mas recentemente me deparei com um banco de dados em um servidor onde cada banco de dados tinha vários arquivos mdf.
Fiz um backup de alguns bancos de dados, movi-os para outro servidor e restaurei o arquivo Primário como .mdf e todos os outros arquivos como .ndf, obviamente, exceto o arquivo de log que foi restaurado como .log.
Agora minhas perguntas são:
- Existe alguma sabedoria em ter vários arquivos .mdf para um banco de dados?
- Existe alguma desvantagem em ter vários arquivos .mdf?
EraSQL Server 2008 R2 64bit Enterprise Edition
Qualquer conselho ou indicação na direção certa é muito apreciado. Obrigada.
Isso ocorre devido à convenção de nomenclatura incorreta. A Microsoft diz que todo banco de dados possui um arquivo de dados primário, mas isso não significa que 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 darmdf
extensão ao arquivo de dados primário endf
ao arquivo de dados secundário para ter a demarcação adequada, mas esta não é uma regra rígida e rápida. Você também pode dar extensão .abc ao arquivo de dados primário, então o que você testemunhou é normal. Na verdade, você pode dar qualquer extensão que desejar.Se você diz:
A resposta é não, um banco de dados pode ter apenas um arquivo de dados primário.
Mas se você quer dizer:
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 fusos), você verá alguma vantagem com o aplicativo de gravação intensiva. Se eles estiverem todos nas mesmas partições lógicas, isso não terá nenhuma vantagem porque subjacentes eles estariam usando recursos comuns. O uso de arquivos e grupos de arquivos melhora o desempenho do banco de dados, pois permite que um banco de dados seja criado em vários discos, vários controladores de disco ou sistemas RAID (matriz redundante de discos independentes). Por exemplo, se 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çotes de leitura/gravação podem acessar os dados em paralelo ao mesmo tempo.
De acordo com este artigo do MSDN BOL
Os grupos de arquivos usam uma estratégia de preenchimento proporcional em todos os arquivos dentro de 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 para 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 do arquivo f1, duas extensões do arquivo f2 e assim por diante. Desta forma, ambos os arquivos ficam cheios aproximadamente ao mesmo tempo, e uma distribuição simples é alcançada.
Outra vantagem que eu conheço é 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 distribuído em arquivos diferentes, cada um com tamanho de 250 G, fica mais fácil na restauração. Este pode não ser realmente o seu cenário, mas ajuda muito, é um pouco mais 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. Bancos de dados formados por vários grupos de arquivos podem ser restaurados em estágios por um processo conhecido como restauração gradual. A restauração gradual funciona com todos os modelos de recuperação, mas é mais flexível para os modelos completos e bulk-logged do que para o modo simples. Arquivos ou grupos de arquivos em um banco de dados podem ser copiados e restaurados 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