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 / 3446
Accepted
Josh Bond
Josh Bond
Asked: 2011-06-23 12:40:48 +0800 CST2011-06-23 12:40:48 +0800 CST 2011-06-23 12:40:48 +0800 CST

Fragmentação de arquivo de banco de dados do SQL Server

  • 772

Eu herdei um sistema onde o DBA anterior adicionou 7 arquivos de dados ao grupo de arquivos PRIMARY (tamanho inicial de 8 MB) e deixou a opção AUTOGROW em 8 MB. O que tenho agora é um conjunto de oito arquivos, cada um com cerca de 3 a 4 GB de tamanho, que vem crescendo lentamente ao longo de um período de dois anos. Eu gostaria de remover a fragmentação do arquivo da maneira mais rápida possível.

Aqui estão as opções que eu criei:

  1. Expanda o 1º arquivo no grupo de arquivos PRIMARY em ~28 GB (7 arquivos x 4 GB)
  2. Mova os dados de cada um dos arquivos sucessivos e marque-os para exclusão
  3. Exclua os outros 7 arquivos
  4. Desanexar o banco de dados
  5. Copie o arquivo de banco de dados desanexado para uma unidade diferente no servidor
  6. Copie o arquivo de banco de dados separado de volta para a unidade original
  7. Reconecte o banco de dados

ou

  1. Crie um novo banco de dados de 32 GB (8 x 4 GB)
  2. Transfira todos os objetos, tabelas, usuários e permissões para o novo banco de dados usando o SSIS
  3. Elimine o banco de dados antigo
  4. Renomeie o novo banco de dados

Um nível de sistema operacional "Disk Defrag" ainda não é uma opção?

Não sei qual opção é a melhor ou se vai funcionar mesmo.

Além disso, esse banco de dados está sendo espelhado e replicado, portanto, a menor quantidade de trabalho em relação à reconstrução é ideal.

Obrigado pela ajuda.

sql-server-2008
  • 3 3 respostas
  • 2861 Views

3 respostas

  • Voted
  1. mrdenny
    2011-06-24T11:02:50+08:002011-06-24T11:02:50+08:00

    Honestamente, com um banco de dados de 32 Gig, a fragmentação física não deve ser um grande problema, a menos que você não tenha alguns GB de RAM.

    • 4
  2. Miles D
    2011-06-23T13:34:13+08:002011-06-23T13:34:13+08:00

    Existem algumas respostas úteis para a seguinte pergunta sobre falha do servidor, que pode ajudar https://serverfault.com/questions/31011/sql-database-physical-file-fragmentation

    • 3
  3. Best Answer
    Marian
    2011-06-24T05:03:21+08:002011-06-24T05:03:21+08:00

    Agora, depois de tantos aumentos de espaço, certamente os arquivos físicos estão fragmentados e se beneficiariam de alguma desfragmentação no nível do arquivo.

    Não conheço sua situação, mas qualquer servidor deve ser rápido o suficiente para atender a um único arquivo de dados de 32 GB. Eu veria um benefício apenas se todos esses arquivos estivessem em discos físicos diferentes, caso contrário, não vejo a necessidade de tal aborrecimento.

    Nessa situação eu iria com a solução 1, porém, criaria o arquivo maior que o tamanho atual, com espaço que deveria ser suficiente pelo menos para o próximo ano e com um tamanho maior para autogrow.

    Não pensei que a desfragmentação no nível do sistema operacional estivesse disponível para arquivos de banco de dados ao vivo. Eu sempre pensei que você precisa desanexá-lo para poder desfragmentar um arquivo, mas parece que os caras da resposta Serverfault conseguiram desfragmentar um arquivo db enquanto o db estava online.

    Ambas as opções devem funcionar, para tornar seu banco de dados mais rápido usando um único arquivo desfragmentado, porém, para a solução nº 2, não vejo necessidade de ter o mesmo número de arquivos, você pode criar um banco de dados com um único data e usando SSIS/bcp para mover tudo nas tabelas do novo banco de dados.

    Eu testaria antes, mas acho que a primeira solução seria mais rápida.

    • 3

relate perguntas

  • Melhores práticas para conectar bancos de dados que estão em diferentes regiões geográficas

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

  • Quanto "Padding" coloco em meus índices?

  • Existe um processo do tipo "práticas recomendadas" para os desenvolvedores seguirem para alterações no banco de dados?

  • Downgrade do SQL Server 2008 para 2005

Sidebar

Stats

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

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

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

    • 2 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

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

    • 10 respostas
  • Marko Smith

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 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
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +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
  • Martin Hope
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +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