SQL Server: Por que os arquivos .MDF e .LDF crescem para 1 GB + para um banco de dados que contém 1 tabela de apenas 10 linhas?

1

Por que os arquivos .MDF e .LDF crescem para 1 GB + para um banco de dados que contém 1 tabela de apenas 10 linhas?

O banco de dados foi originado de um arquivo de 2MB .bak e nenhum outro dado foi adicionado a ele.

    
por CJ7 11.07.2010 / 08:20

5 respostas

7

O MDF pode ter sido criado como 1 GB - ou continha muito mais do que apenas 10 linhas em algum momento. Os MDFs normalmente não diminuem de tamanho quando você remove dados deles. Para obter o tamanho de volta, você quase teria que criar um novo banco de dados, certifique-se de definir seu tamanho inicial baixo e, em seguida, copie os dados dessa tabela para o novo banco de dados.

O LDF (arquivo de log de transações) crescerá se você executar muitas instruções SQL que precisam ser registradas, por exemplo, inserções, atualizações, exclusões e outras coisas. Usando backups de log regularmente, você pode manter o arquivo de log de transações pequeno e alternar o banco de dados para o modelo de recuperação Simples (em vez de Full) também ajudará significativamente.

    
por 11.07.2010 / 08:29
4

Uma única linha com uma única coluna pode ter 2Gb.

Mas mesmo que a tabela seja realmente pequena, o tamanho atual não é indicativo do histórico passado. Uma tabela pode ter 10 linhas após 100 milhões de linhas terem sido excluídas. O log manterá toda a atividade até o backup ser feito. Bancos de dados não encolhem após o crescimento, nem devem ser forçados a descobrir por circunstâncias extraordinárias.

    
por 11.07.2010 / 08:30
1

Você armazena BLOBs em seu banco de dados? Blobs (objeto binário grande) consomem mais memória do que outras coisas.

    
por 11.07.2010 / 08:56
0

Como muitas pessoas disseram, há várias razões para que seus arquivos físicos cresçam mesmo se você estiver armazenando poucos dados em seu banco de dados.

Se você precisar e / ou quiser, reduza-os ao mínimo necessário. Primeiro, faça um backup do log de banco de dados (isso reduzirá os logs de transação) e, em seguida, use o DBCC SHRINKDATABASE comando (ou a operação da GUI equivalente no Management Studio).

    
por 11.07.2010 / 15:46
0

Não responde à sua pergunta, mas se você puder repetir a restauração, poderá usar o Profiler para "observar" quais processos tocam o banco de dados em questão.

    
por 15.07.2010 / 15:56