Usuário com melhor resposta
Banco de dados 2008R2 consumindo muita memoria

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 ?
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:
Qualquer dúvida só dizer! Um abraço!sp_configure 'max server memory', 5734 --5.6 MB para o SQL SERVER
reconfigure with override
go
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:
- Editado André César RodriguesMicrosoft employee 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:
- Editado André César RodriguesMicrosoft employee quinta-feira, 13 de junho de 2013 19:02
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.
-
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:
Qualquer dúvida só dizer! Um abraço!sp_configure 'max server memory', 5734 --5.6 MB para o SQL SERVER
reconfigure with override
go
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:
- Editado André César RodriguesMicrosoft employee 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 ?
-
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:
- Editado André César RodriguesMicrosoft employee quinta-feira, 13 de junho de 2013 19:02
-
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]