locked
SQL Server 2008 R2 Express. Porque ele cresce tão rápido? RRS feed

  • Pergunta

  • Bom dia a todos,

    Tenho um banco de dados SQL Server 2008 R2 Express que vai até 10GB. Tenho notado algo muito estranho. Quando criei o banco ele começou com 2 MB. Depois de realizar uns poucos cadastros na base ele cresceu para 3MB. Depois voltei e cadastrei mais algumas coisas e ele cresceu denovo agora para 4Mb. Em fim, ele cresce de forma muito estranha. O Log também cresce, mais o arquivo físico me preocupa, pois terei esse banco de dados de 10GB em um cliente meu que tenho certeza que em uma base de dados como postgree(Uso todo dia) não cresce dessa forma eu poderia ficar despreocupado.

    Atualmente para minimizar o impacto, estou usando o DBCC SHRINKDATABASE que volta o banco de dados ao tamanho original (Eu Acho!).

    Amigos, o que posso fazer, tenho medo de colocar em produção e em menos de 1 ano ter os 10GB preenchidos e o cliente parar o uso do sistema.

    Alguém pode me ajudar?

     

    Abraços!

    Watson Passos


    Watson Passos Especializando em Gerenciamento de Projetos Graduado em Sistemas de Informação
    • Movido Gustavo Maia Aguiar quarta-feira, 22 de setembro de 2010 16:18 (De:SQL Server - Desenvolvimento Geral)
    quarta-feira, 22 de setembro de 2010 15:35

Respostas

  • Watson, Se o seu banco de dados esta configurado para o crescimento automático, o SQL Server vai respeitar esta confuguração e alocar os espaços necessários para identificar e estabelecer o quanto ele deve crescer. Como o Fabrício destacou o valor de crescimento do seu banco esta em 1Mb então não é um valor absurdo. A utilização da sp_spaceused com certeza pode ajudar em muito.
    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]
    quarta-feira, 29 de setembro de 2010 18:53
    Moderador

Todas as Respostas

  • Passos,

    Existem diversas considerações que devemos fazer em relação ao crescimento de um banco de dados, dentre elas a forma de utilização e os dados que estão sendo armazenados neste banco.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]
    quarta-feira, 22 de setembro de 2010 16:44
    Moderador
  • Tenho nesse banco apenas tipos básicos como int, varchar e datatime. Tomas as minhas tabelas são relacionadas com FKs. Não vejo nada de mais no banco. Ele é realmente bem simples.

     

    Abraços!


    Watson Passos Especializando em Gerenciamento de Projetos Graduado em Sistemas de Informação
    quarta-feira, 22 de setembro de 2010 16:49
  • Passos,

    Mas você imagina que o seu banco deveria crescer quanto?

    Como esta configurado o fator de crescimento deste banco em MBs ou Porcentagem?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]
    quarta-feira, 22 de setembro de 2010 17:09
    Moderador
  • Junior,

    em primeiro lugar, obrigado pela atenção que está me dando no caso.

    Eu imagino que o banco deve cresce, mais por exemplo, acabei de realizar o cadastro de 2 produtos (Tabela com 5 campos) e o banco cresceu de 2654Kb para 3785Kb. Rodei o DBCC SHRINKDATABASE e o banco voltou para 2750 ou seja 100kb a mais em apenas 2 produtos.

    O meu banco está configurado da seguinte forma:

    Data Files

     

    • Enable Automatic File Growth = True
    • File Growth = 1
    • Fator = Magabytes
    Log Files
    • Enable Automatic File Growth = True
    • File Growth = 10
    • Fator = Percent

     

    O que eu quero é sempre ver o tamanho do banco real e não ter que ficar rodando o DBCC SHRINKDATABASE (Acho que pode prejudicar o banco) todos os dias para saber o tamanho do banco de dados entendeu.

    Apenas lembrando que o SQL Server é o 2008 R2 Express (Versão gratuita de 10GB).

    Qual a melhor configuração para o meu caso?

    Abraços!

    Watson Passos


    Watson Passos Especializando em Gerenciamento de Projetos Graduado em Sistemas de Informação
    quarta-feira, 22 de setembro de 2010 18:00
  • Olá,

    É normal que o arquivo tenha crescido de 2654kb para 3785kb, que corresponde a aproximadamente 1MB. O crescimento do arquivo ocorre de acordo com o parâmetro "File Growth", que no caso está configurado:

  • Enable Automatic File Growth = True
  • File Growth = 1
  • Fator = Magabytes

    Você já experimentou utilizar o comando sp_spaceused? Ele fornece uma visão bem mais precisa sobre o consumo de espaço no banco de dados.

    Abraços, Fabricio

quarta-feira, 29 de setembro de 2010 01:08
  • Watson, Se o seu banco de dados esta configurado para o crescimento automático, o SQL Server vai respeitar esta confuguração e alocar os espaços necessários para identificar e estabelecer o quanto ele deve crescer. Como o Fabrício destacou o valor de crescimento do seu banco esta em 1Mb então não é um valor absurdo. A utilização da sp_spaceused com certeza pode ajudar em muito.
    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]
    quarta-feira, 29 de setembro de 2010 18:53
    Moderador
  • Bom dia, WPassos.

     

    Quando inserimos informação no banco ele vai cresce da seguinte forma:

     

    Cada insert é de 1 KByte (exemplo) a cada mil Kbytes temos 1 Mega, esse é o tamanho que seu banco cresce certo, mas quando adicionamos mais 1 Kbytes ele não cresce 1001 Kbytes ele cresce para 2 Megas, o SQL armazena o tamanho inteiro para gravar os seus arquivos não cresce de acordo com os arquivo, a não ser se você configurar o crescimento do banco por porcentagem.

     


    Emerson Alberti Corrêa Analista de Suporte Pleno Stefanini IT Solutions (Ipiranga Asfaltos S/A – uma Empresa do sistema BR Petrobras)
    quinta-feira, 4 de novembro de 2010 16:35