Banco de dados com vários arquivos .mdf


10

Pesquisei on-line, mas não encontrei o que estou procurando.

O problema / consulta é que eu saiba que um banco de dados no SQL Server deve ter um arquivo .mdf e talvez alguns arquivos .ndf e um arquivo .log.

Eu 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 em que cada banco de dados tinha vários arquivos mdf.

Fiz um backup de algum banco de dados e os movi 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:

  1. Existe alguma sabedoria em ter vários arquivos .mdf para um banco de dados?
  2. Existe alguma desvantagem de ter vários arquivos .mdf?

isso foi SQL Server 2008 R2 64bit Enterprise Edition

Qualquer conselho ou indicação na direção certa é muito apreciado. Obrigado.

Respostas:


14

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 .mdfextensão, mas apenas um será o arquivo de dados primário. É melhor dar mdfextensão ao arquivo de dados primário e ndfao 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


Se o banco de dados tiver mais de um arquivo, os arquivos de dados, por exemplo, ndf e primário, ainda serão o padrão. Com isso, se um dos arquivos do banco de dados usado para criar tabelas / índices nele, ele cria algum desempenho indireto? Quero dizer, o grupo de arquivos padrão ainda é primário, mas a tabela e os índices criados estão nos arquivos de dados.
Hi10
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.