Monitorar o uso de memória
Aplica-se a:SQL Server
Monitore uma instância do SQL Server periodicamente para confirmar se o uso de memória está dentro dos intervalos típicos.
Configurar a memória máxima do SQL Server
Por padrão, uma instância do SQL Server pode, com o tempo, consumir a maior parte da memória disponível do sistema operacional Windows no servidor. Uma vez que a memória é adquirida, ela não será liberada a menos que a pressão da memória seja detetada. Isso ocorre por design e não indica um vazamento de memória no processo do SQL Server. Use a opção de memória do servidor max para limitar a quantidade de memória que o SQL Server pode adquirir para a maioria de seus usos. Para obter mais informações, consulte o Guia de arquitetura de gerenciamento de memória .
No SQL Server no Linux, definir o limite de memória com a ferramenta mssql-conf e a configuração memory.memorylimitmb.
Monitorar a memória do sistema operacional
Para monitorar uma condição de pouca memória, use os seguintes contadores de servidor do Windows. Muitos contadores de memória do sistema operacional podem ser consultados por meio das exibições de gerenciamento dinâmico sys.dm_os_process_memory e sys.dm_os_sys_memory.
Memória : Bytes disponíveis
Esse contador indica quantos bytes de memória estão atualmente disponíveis para uso por processos. Valores baixos para o contador Bytes Disponíveis podem indicar uma escassez geral de memória do sistema operativo. Esse valor pode ser consultado via T-SQL usando sys.dm_os_sys_memory.available_physical_memory_kb.Memória: Páginas/seg
Este contador indica o número de páginas que foram recuperadas do disco devido a falhas de página de disco rígido ou gravadas no disco para liberar espaço no conjunto de trabalho devido a falhas de página. Uma taxa alta para o contador de Páginas/s pode indicar paginação excessiva.Memória: Falhas de Página por segundo Este contador indica a taxa de falhas de página para todos os processos, inclusive os do sistema. Uma taxa baixa, mas diferente de zero, de paginação em disco (e, portanto, falhas de página) é típica, mesmo que o computador tenha muita memória disponível. O Microsoft Windows Virtual Memory Manager (VMM) retira páginas do SQL Server e de outros processos enquanto ajusta os tamanhos dos conjuntos de trabalho desses processos. Essa atividade do VMM tende a causar falhas de página.
Processo: Faltas de página por segundo Este contador indica a taxa de faltas de página para um determinado processo de utilizador. Monitorar Processo: Falhas de página/s para determinar se a atividade do disco é causada pela paginação pelo SQL Server. Para determinar se o SQL Server ou outro processo é a causa da paginação excessiva, monitore o Processo: contador de Falhas de página/s para a instância do processo do SQL Server.
Para obter mais informações sobre como resolver paginação excessiva, consulte a documentação do sistema operacional.
Isolar a memória usada pelo SQL Server
Para monitorizar o uso de memória do SQL Server, use os seguintes contadores de objetos do SQL Server. Muitos contadores de objetos do SQL Server podem ser consultados por meio das exibições de gerenciamento dinâmico sys.dm_os_performance_counters ou sys.dm_os_process_memory.
Por padrão, o SQL Server gerencia seus requisitos de memória dinamicamente, com base nos recursos disponíveis do sistema. Se o SQL Server precisar de mais memória, ele consultará o sistema operacional para determinar se a memória física livre está disponível e usa a memória disponível. Se houver pouca memória livre para o sistema operacional, o SQL Server liberará memória de volta para o sistema operacional até que a condição de pouca memória seja aliviada ou até que o SQL Server atinja o limite de memória do servidor de min. No entanto, você pode substituir a opção de usar memória dinamicamente utilizando as opções de configuração do servidor: memória mínima do servidor ,e memória máxima do servidor ,. Para obter mais informações, consulte Opções de memória do servidor .
Para monitorar a quantidade de memória que o SQL Server usa, examine os seguintes contadores de desempenho:
SQL Server: Gerenciador de memória: Memória total do servidor (KB)
Este contador indica a quantidade de memória do sistema operacional que o gerenciador de memória do SQL Server alocou atualmente para o SQL Server. Espera-se que esse número cresça conforme exigido pela atividade real e cresça após a inicialização do SQL Server. Consulte esse contador usando a Vista de Gestão Dinâmica sys.dm_os_sys_info, observando a coluna committed_kb.SQL Server: Gerenciador de memória: memória do servidor de destino (KB)
Esse contador indica uma quantidade ideal de memória que o SQL Server poderia consumir, com base na carga de trabalho recente. Compare com Memória Total do Servidor após um período de operação típica para determinar se o SQL Server tem uma quantidade desejada de memória alocada. Após a operação típica, de memória total do servidor e de memória do servidor de destino devem ser semelhantes. Se de Memória Total do Servidor for significativamente menor do que de Memória do Servidor de Destino, a instância do SQL Server pode estar sofrendo pressão de memória. Durante um período após a inicialização do SQL Server, espera-se que a Total de Memória do Servidor seja menor do que a Memória do Servidor de Destino, à medida que a Total de Memória do Servidor cresce. Consulte esse contador usando o modo de exibição de gerenciamento dinâmico sys.dm_os_sys_info, observando a coluna committed_target_kb. Para obter mais informações e práticas recomendadas de configuração de memória, consulte as opções de configuração de memória do Server.Processo: Conjunto de trabalho
Este contador indica a quantidade de memória física que está em uso por um processo atualmente, de acordo com o sistema operacional. Observe a instância sqlservr.exe deste contador. Consulte esse contador usando a visão de gerenciamento dinâmico sys.dm_os_process_memory, observando a colunaphysical_memory_in_use_kb
.Processo: Bytes privados
Esse contador indica a quantidade de memória que um processo solicitou para seu próprio uso no sistema operacional. Observe a instância sqlservr.exe deste contador. Como esse contador inclui todas as alocações de memória solicitadas por sqlservr.exe, incluindo aquelas não limitadas por a opção max server memory, esse contador pode relatar valores maiores que a opção max server memory.SQL Server: Gerenciador de buffer: páginas de banco de dados
Esse contador indica o número de páginas no pool de buffers com conteúdo do banco de dados. Não inclui outra memória de pool não buffer no processo do SQL Server. Consulte esse contador usando o modo de exibição de gerenciamento dinâmico sys.dm_os_performance_counters.SQL Server: Gestor de buffer: taxa de acertos do cache de buffer
Esse contador é específico do SQL Server. É desejável um rácio igual ou superior a 90. Um valor maior que 90 indica que mais de 90% de todas as solicitações de dados foram atendidas a partir do cache de dados na memória sem ter que ler do disco. Encontre mais informações sobre o SQL Server Buffer Manager, consulte o SQL Server Buffer Manager Object. Consulte esse contador usando a vista de gerenciamento dinâmico sys.dm_os_performance_counters.SQL Server: Buffer Manager: Expectativa de vida da página
Esse contador mede a quantidade de tempo, em segundos, que a página mais antiga permanece no pool de buffers. Para sistemas que usam uma arquitetura NUMA, essa é a média em todos os nós NUMA. Um valor mais alto e crescente é o melhor. Uma queda repentina indica uma rotatividade significativa de dados dentro e fora do pool de buffers, indicando que a carga de trabalho não poderia se beneficiar totalmente dos dados já na memória. Cada nó NUMA tem seu próprio nó do pool de buffers. Em servidores com mais de um nó NUMA, exiba a expectativa de vida da página de cada nó do pool de buffers usando SQL Server: Buffer Node: Page life expectancy. Consulte esse contador usando o modo de exibição de gerenciamento dinâmico sys.dm_os_performance_counters.
Exemplos
Determinar a alocação de memória atual
As consultas a seguir retornam informações sobre a memória alocada no momento.
SELECT
(total_physical_memory_kb/1024) AS Total_OS_Memory_MB,
(available_physical_memory_kb/1024) AS Available_OS_Memory_MB
FROM sys.dm_os_sys_memory;
SELECT
(physical_memory_in_use_kb/1024) AS Memory_used_by_Sqlserver_MB,
(locked_page_allocations_kb/1024) AS Locked_pages_used_by_Sqlserver_MB,
(total_virtual_address_space_kb/1024) AS Total_VAS_in_MB,
process_physical_memory_low,
process_virtual_memory_low
FROM sys.dm_os_process_memory;
Determinar a utilização atual da memória do SQL Server
A consulta a seguir retorna informações sobre a utilização atual da memória do SQL Server.
SELECT
sqlserver_start_time,
(committed_kb/1024) AS Total_Server_Memory_MB,
(committed_target_kb/1024) AS Target_Server_Memory_MB
FROM sys.dm_os_sys_info;
Determinar a expectativa de vida da página
A consulta a seguir utiliza sys.dm_os_performance_counters
para observar o valor atual do tempo de vida útil da página da instância do SQL Server ao nível geral do gestor de buffer e em cada nível de nó NUMA.
SELECT
CASE instance_name WHEN '' THEN 'Overall' ELSE instance_name END AS NUMA_Node, cntr_value AS PLE_s
FROM sys.dm_os_performance_counters
WHERE counter_name = 'Page life expectancy';
Conteúdo relacionado
- Monitorar o uso de recursos (Monitor de desempenho)
- sys.dm_os_sys_memory (Transact-SQL)
- sys.dm_os_process_memory (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)
- sys.dm_os_performance_counters (Transact-SQL)
- SQL Server, objeto Gestor de Memória
- SQL Server, objeto do Buffer Manager
- Opções de configuração de memória do Server
- Guia de arquitetura de gerenciamento de memória