Inquiridor
Baixo Consumo de Memória SQL Server 2017

Pergunta
-
Prezados,
Migrei o banco de dados SQL Server 2008 R2 para o SQL Server 2017 e observei via gerenciador de tarefas que o consumo de memória não passa de 372 Mb.
Revisei a configuração da utilização de memória mínima e máxima junto ao banco de dados e esta de 1.024 MB a 40.960 MB.
Cheguei a refazer esta configuração via script, porém nada mudou.
Algum(a) colega encontrou resposta para esta questão, pois os usuários do sistema ERP questionam lentidão nos processos e estou achando que pode ter relação.
Antes da migração, podia identificar no gerenciador de tarefas do Windows o consumo dos 40GB.
Obrigado
Alexandre
Todas as Respostas
-
Alexandre,
Existem diversas dúvidas sobre como identificar a maneira correta para afirmar ou dizer o quanto o SQL Server esta consumindo de memória.
Até a versão 2014 do SQL Server rodando em ambientes Windows 7, a Microsoft recomendava que todo controle e gerenciamento de memória fosse realizado e monitorado via SQL Server Management Studio, pois bem, este cenário mudou muito desde as novas versões do Windows Server 2012 e 2016 e principalmente com as novas versões do SQL Server rodando em Windows 10 e Linux.
O Task Manager até o Windows Server 2008/R2 para versões do SQL Server 2014 ou inferior tinha a função de apresentar o quanto o executável do SQL Server estava consumindo de memória e não exatamente a instância, e ai que ficavamos com algumas dúvidas.
Você destacou que esta utilizando o SQL Server 2017!
Perguntas:
1 - Gostaria de saber qual é a versão do Windows que esta utilizando?
2 - Qual é a arquitetura do Hardware que você esta utilizando? É uma máquina física ou virtualizada?
3 - Se for virtualizada, qual é o Hypervisor?
4 - Por acaso esta utilizando configuração de memória dinâmica?
Observação: Em relação as configurações mínimas e máximas de memória estes são valores que serão utilizados como balizadores para o Sistema Operacional e principalmente para o SQL Server, sabendo que mesmo que a configuração mínima esteja definida por exemplo como 1Gb, no caso o SQL Server identifique que não seja necessário utilizar esta quantidade, será utilizado somente o necessário.
Para começarmos uma possível análise e validação, através do Management Studio, execute o Script abaixo e nosso retorno o resultado:
-- Script - 1 -- Identificando o quanto de memória o SQL Server tem alocada no momento --
select counter_name, cntr_value, cast((cntr_value/1024.0)/1024.0 as numeric(10,4)) as Gbs, cast((cntr_value/1024.0)/1024.0*1024 as numeric(10,2)) as Mbs from sys.dm_os_performance_counters where counter_name like '%Target server_memory%' OR counter_name like '%Total server_memory%' Go
-- Script 2 -- Identificando a alocação atual de memória --
SELECT physical_memory_in_use_kb/1024 AS sql_physical_memory_in_use_MB, large_page_allocations_kb/1024 AS sql_large_page_allocations_MB, locked_page_allocations_kb/1024 AS sql_locked_page_allocations_MB, virtual_address_space_reserved_kb/1024 AS sql_VAS_reserved_MB, virtual_address_space_committed_kb/1024 AS sql_VAS_committed_MB, virtual_address_space_available_kb/1024 AS sql_VAS_available_MB, page_fault_count AS sql_page_fault_count, memory_utilization_percentage AS sql_memory_utilization_percentage, process_physical_memory_low AS sql_process_physical_memory_low, process_virtual_memory_low AS sql_process_virtual_memory_low FROM sys.dm_os_process_memory Go
Atente-se ao valor apresentado para expressão: physical_memory_in_use_kb/1024 As sql_physical_memory_in_use_MB, ela que vai nos ajudar a identificar neste momento o consumo e alocação atual de memória para o SQL Server.
Caso você queira saber o quanto o seu Sistema Operacional tem de memória total e memória livre para uso neste momento, podemos utilizar a sys.dm_os_sys_memory, veja o exemplo:
;With CTEOsMemory As ( Select (total_physical_memory_kb / 1024) as MemoriaFisicaTotal, (available_physical_memory_kb / 1024) as MemoriaFisicaDisponivel from sys.dm_os_sys_memory) Select MemoriaFisicaTotal As 'Memória RAM Total em GBs', MemoriaFisicaDisponivel As 'Memória RAM Dispónivel em GBs', (MemoriaFisicaTotal-MemoriaFisicaDisponivel) As 'Memória RAM Alocada em GBs para uso' From CTEOsMemory Go
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
- Editado Junior Galvão - MVPMVP, Moderator quinta-feira, 27 de fevereiro de 2020 12:03
-
-