none
Banco de dados 2008R2 consumindo muita memoria RRS feed

  • Pergunta

  • Galera, o seguinte,

    Estou com um servidor dedicado para o banco de dados ( Xeon + 8 GB )

    Porém com o passar dos dias, o consumo de memória esta subindo. Até que qualquer busca 

    no banco se torna muito lenta, sendo necessário a reinicialização do servidor para que a memoria seja desalocada do sql.

    Alguma ideia do que eu possa fazer para resolver este problema ?

    quarta-feira, 12 de junho de 2013 14:41

Respostas

  • Olá Raphael!

    Verifique por gentileza qual valor máximo esta configurado para consumo de memória da instancia do sql server, faça isso através dos passos abaixo:

    1 - Abra o SQL com algum usuário que tenha perfil de administrador (sa);

    2 - Digite os comandos abaixo:

    sp_configure 'show advanced options',1
    reconfigure with override
    go
    sp_configure 

    3 - Agora veja para o parametro max server memory (MB) qual valor esta na coluna run_value. Conforme o Alexandre falou é recomendado que você limite o valor de consumo do SQL, recomendo ao menos 30% para o sistema operacional, então no parametro voce rodaria algo como o comando abaixo:

    sp_configure 'max server memory', 5734 --5.6 MB para o SQL SERVER
    reconfigure with override
    go

    Qualquer dúvida só dizer! Um abraço!


    André César Rodrigues

    Please click the Mark as answer button and vote as helpful if this reply solves your problem. Thanks!

    Blog: http://sqlmagu.blogspot.com.br  LinkedIn:   


    quarta-feira, 12 de junho de 2013 18:17
  • Não necessariamente a limitação ira resolver seu problema, mais é recomendado que se faça a mesma. Um próximo passo seria você investigar as queries que custam mais "caro" para o SQL Server executar pensando em uma possibilidade de "tunar" as mesmas posteriormente.

    O link abaixo também pode te ajudar:

    http://www.brentozar.com/archive/2006/12/dba-101-using-perfmon-for-sql-performance-tuning/


    Abraço!

    André César Rodrigues

    Please click the Mark as answer button and vote as helpful if this reply solves your problem. Thanks!

        

    Blog:http://sqlmagu.blogspot.com.brLinkedIn:


    quinta-feira, 13 de junho de 2013 19:00

Todas as Respostas

  • Desses 8GB quanto que esta alocado para o SQL Server ? É importante sempre deixar memoria para o SO tambem e nunca deixar o SQL com o maximo permitido, neste caso eu deixaria para o SQL 6BG.

    Como são os processos que a base executa ? ha muitos cursores, tabelas temporarias de memoria, etc ?


    Alexandre Matayosi Conde Mauricio.

    quarta-feira, 12 de junho de 2013 15:23
  • Olá Raphael!

    Verifique por gentileza qual valor máximo esta configurado para consumo de memória da instancia do sql server, faça isso através dos passos abaixo:

    1 - Abra o SQL com algum usuário que tenha perfil de administrador (sa);

    2 - Digite os comandos abaixo:

    sp_configure 'show advanced options',1
    reconfigure with override
    go
    sp_configure 

    3 - Agora veja para o parametro max server memory (MB) qual valor esta na coluna run_value. Conforme o Alexandre falou é recomendado que você limite o valor de consumo do SQL, recomendo ao menos 30% para o sistema operacional, então no parametro voce rodaria algo como o comando abaixo:

    sp_configure 'max server memory', 5734 --5.6 MB para o SQL SERVER
    reconfigure with override
    go

    Qualquer dúvida só dizer! Um abraço!


    André César Rodrigues

    Please click the Mark as answer button and vote as helpful if this reply solves your problem. Thanks!

    Blog: http://sqlmagu.blogspot.com.br  LinkedIn:   


    quarta-feira, 12 de junho de 2013 18:17
  • Andre,

    Vou realizar esta limitação hoje após o horário.

    O estranho que a utilização de memoria pelo agente do SQLSRVER.exe esta crescendo muito rápido durante o dia.

    Realizando a limitação de memória para o SQL, resolveria o problema de lentidão de acesso ao banco ?

    quinta-feira, 13 de junho de 2013 16:35
  • Não necessariamente a limitação ira resolver seu problema, mais é recomendado que se faça a mesma. Um próximo passo seria você investigar as queries que custam mais "caro" para o SQL Server executar pensando em uma possibilidade de "tunar" as mesmas posteriormente.

    O link abaixo também pode te ajudar:

    http://www.brentozar.com/archive/2006/12/dba-101-using-perfmon-for-sql-performance-tuning/


    Abraço!

    André César Rodrigues

    Please click the Mark as answer button and vote as helpful if this reply solves your problem. Thanks!

        

    Blog:http://sqlmagu.blogspot.com.brLinkedIn:


    quinta-feira, 13 de junho de 2013 19:00
  • Rafael,

    Se este consume esta aumento, uma possibilidade é que as suas aplicações não estão encerrando as conexões ou cache de transações.

    Faça um teste, identificando quais transações estão em cache, com base, no exemplo abaixo:

    SELECT QT.text,
                 QP.query_plan,
                 QS.execution_count,
                 QS.total_elapsed_time,
                 QS.last_elapsed_time,
                 QS.total_logical_reads
    FROM sys.dm_exec_query_stats as QS
     CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as QT
     CROSS APPLY sys.dm_exec_query_plan (QS.plan_handle) as QP
    ORDER BY QS.execution_count DESC

    E depois, uma possibilidade é forçar a limpeza do Cache:

    -- Forçar a escrita das páginas em disco "limpando-as"
    
    CHECKPOINT
     
    
    -- Eliminar as páginas de buffer limpas
    
    DBCC DROPCLEANBUFFERS
    
     
    -- Eliminar todas as entradas do CACHE de "Procedures"
    
    DBCC FREEPROCCACHE
    
     
    
    -- Limpar as entradas de Cache não utilizadas
    
    DBCC FREESYSTEMCACHE ( 'ALL' )

    Veja se o consumo de memória é liberada.

    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    sexta-feira, 14 de junho de 2013 19:55
    Moderador