AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 86123
Accepted
M.Ali
M.Ali
Asked: 2014-12-14 13:40:07 +0800 CST2014-12-14 13:40:07 +0800 CST 2014-12-14 13:40:07 +0800 CST

Banco de dados com vários arquivos .mdf

  • 772

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:

  1. Existe alguma sabedoria em ter vários arquivos .mdf para um banco de dados?
  2. 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.

sql-server sql-server-2008-r2
  • 1 1 respostas
  • 20111 Views

1 respostas

  • Voted
  1. Best Answer
    Shanky
    2014-12-14T14:55:10+08:002014-12-14T14:55:10+08:00

    Mas recentemente me deparei com um banco de dados em um servidor onde 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 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 .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 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.

    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 primários 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 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

    • 14

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve