none
Liberar memória usada pelo SQL Server RRS feed

  • Pergunta

  • Olá,

    Estou com o seguinte problema : tenho uma aplicação que roda muitas querys em loop. O Sql Server vai aumentando a memória alocada até inviabilizar a operação do servidor que vai ficando lendo até começar a gerar timeouts. Já otimizei tudo o que podia em minha aplicação mas o aumento de consumo de memória se mantém. 

    Sem minha aplicação rodando a memória ocupada pelo SQL Server se mantém em torno de 1.2 Gb e com minha aplicação a demanda vai a 2 Gb e começa a travar tudo. O servidor é Win 2003 e tem 4 Gb.

    Agradeço muito qualquer ajuda. 


    • Movido Gustavo Maia Aguiar quarta-feira, 10 de março de 2010 16:58 (De:SQL Server - Desenvolvimento Geral)
    quarta-feira, 10 de março de 2010 14:33

Todas as Respostas

  • Pode explicar melhor a questão das queries em Loop ?
    Anderson - DBA/MCP/MCTS/MCITP/MCT - Sua pergunta foi respondida ? Marque-a como tal! www.myspace.com/andersondpa
    quarta-feira, 10 de março de 2010 14:41
  • Olá Anderson,

    Trata-se de um loop em todas as operações de compra e venda do cliente realizadas em um certo período de temmpo para gerar o SINTEGRA. Trata-se no caso de um loop controlado. Ai a memória consumida pelo SGBD vai aumentando e eu não consigo reduzir esta memória.

    Obrigado
    quarta-feira, 10 de março de 2010 14:57
  • Boa Tarde,

    O SQL Server aloca e desaloca memória de maneira eficiente e se ele está alocando mais memória do que deve, possivelmente a aplicação está demandando dele coisas que exijam mais alocações de memória. Para um banco de dados não é ruim alocar memória, pois, justamente por alocar mais memória é que ele poderá retornar os dados requisitados mais rapidamente sem a necessidade de recuperação do disco. Se a memória está totalmente alocada isso deve ser visto como um ponto positivo, pois, mais dados estão em memória e podem servir as requisições eficientemente.

    Desalocar memória apenas irá "descartar" o que já estava em memória e novas requisições irão forçar o SQL Server a requisitar os dados do disco o que pode ser mais prejudicial no fim das contas. Eu sugiro rever a aplicação (talvez haja mais ainda a otimizar).

    Se isso não puder ser feito, sugiro limitar o uso da memória. Caso você queira desalocar, rode os comandos abaixo por sua conta e risco (pode ser que eles piorem o desempenho ao invés de melhorá-lo):

    DBCC DROPCLEANBUFFERS
    DBCC FREEPROCCACHE

    [ ]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
    quarta-feira, 10 de março de 2010 17:11