none
consumo memória SQL RRS feed

  • Pergunta

  • Olá,
    Estou para colocar um servidor em produção esta semana, mas a um fato que me chama a atençao e não tenho certesa se isso é nomal, pos quando reinicio o serviço do SQL ele fica consumindo 400 e poucos k de memória até menos. Porém, quando listo algum relatório ou faço exportação e importação ele fica consumindo 4.466.560k de RAM(setei nas propriedade do SQL que o consumo máximo de memória é 5 GB), e não baixa estes valores, somente se eu reiniciar o serviço.
    Pergunto, é normal este alto consumo? É devido a paginação?
    Se eu criar outra DATABASE neste servidor posso ter problemas de desenpenho? pergunto pq quero centralisar todos as bases SQL no mesmo servidor.

    Especificações do Hw e SO:
    Windowns Server 2008 R2 Enterprise 64bits
    8 Gb de RAM 
    Six Core AMD
    RAID 10
    HD SAS
    SQL server 2008 Standard 64bits
    Antivirus ESET, com regras de exceçao nos mdf e ldf

    Desde já, obrigada por sua ajuda!
    domingo, 7 de março de 2010 22:27

Todas as Respostas

  • Neia_S;

    É um padrão no SQL, na verdade ele mantem esse suposto consumo de memória, se não me engano isto favorece alguns processos que ja estão compilados (por exemplo), mas ele vai liberando memória para outras aplicações conforme a necessidade. Isto favorece a performance do serviço, vário processos ficam em cache não necessitando assim de novas compilações, planos de execução, etc.

    Você deve se preocupar com isto caso esteja enfrentando alguma lentidão nos processos ou se notar uma paginação muito alta no disco.

    Att,
    Ricardo Muramatsu
    http://ricardomura.spaces.live.com
    segunda-feira, 8 de março de 2010 14:36
  • Boa Tarde Neia_S,

    Na verdade há uma interpretação equivocada quando se fala em consumo de memória em banco de dados (SQL, Oracle ou qualquer outro). Se fosse um servidor de aplicação, seria esperado que após o uso a memória fosse desalocada para que outros processos e aplicações pudessem reutilizá-la. No caso de um banco de dados o comportamento é completamente oposto. Normalmente o SGBD utiliza muita memória e não desaloca, pois, ao deixar os dados, planos de execução, etc em memória ele poderá atender com eficiência outras requisições.

    Se o banco de dados desalocasse a memória logo após o uso, o resultado seria muito ruim, pois, ele poderia estar recuperando os mesmos dados há todo instante, colocando-os em memória, desalocando-os e recuperando-os logo em seguida. Por isso em banco de dados, quando há alto consumo de memória, deve-se pensar nisso como algo mais positivo que negativo. Se há memória disponível para colocar dados em memória, que bom que o banco está usando. Pior seria ter memória e não usar.

    O problema é quando consultas mal elaboradas fazem com que o banco tenha que utilizar mais memória do que o necessário (caso típico de quando a consulta retorna mais dados que o necessário). Nesse caso, o ponto a ser investigado não é se o banco de dados está ou não alocando memória, mas sim se a consulta está ou não bem escrita. Se um relatório faz com que o banco consuma 5GB, sugiro começar a investigá-lo.

    Opcionalmente verifique se as configurações de memória estão adequadas (min server memory, max server memory).

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como descobrir a data do último acesso a uma tabela ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!964.entry


    Classifique as respostas. O seu feedback é imprescindível
    segunda-feira, 8 de março de 2010 16:53