Visualização rápida de quanta RAM é alocada para o SQL Server?

15

Com o SQL Server 2005, você pode consultar o Gerenciador de tarefas e, pelo menos, obter uma visão superficial de quanta memória é alocada para o SQL Server.

Com o SQL Server 2008, o conjunto de trabalho ou o tamanho da confirmação nunca ultrapassa os 500 MB, mesmo que o contador perf SQLServer: Gerenciador de memória / memória total do servidor (KB) declare 16.732.760.

Existe uma configuração em que ele realmente mostre a memória do servidor no Gerenciador de tarefas? Ou é o resultado deles mudarem como a memória é usada no SQL Server

AngryHacker
fonte

Respostas:

25

NUNCA, NUNCA confiar no Gerenciador de Tarefas para dizer quanta memória o SQL Server está usando (talvez você esteja se lembrando de um sistema de 32 bits com uma quantidade muito pequena de memória). Pare de usar o Gerenciador de tarefas para esse período. Use o contador de desempenho - você também pode consultar o contador de desempenho usando DMVs:

SELECT object_name, cntr_value 
  FROM sys.dm_os_performance_counters
  WHERE counter_name = 'Total Server Memory (KB)';

Você pode salvar isso como um atalho de consulta em Ferramentas> Opções> Ambiente> Teclado> Atalhos de Consulta e obter resultados precisos em uma janela de consulta muito mais rapidamente do que obter resultados imprecisos no Gerenciador de Tarefas.

Você também pode verificar a pressão da memória (e se pode fazer algo a respeito) usando estas consultas:

SELECT object_name, cntr_value
  FROM sys.dm_os_performance_counters
  WHERE counter_name IN ('Total Server Memory (KB)', 'Target Server Memory (KB)');

-- SQL Server 2012:
SELECT physical_memory_kb FROM sys.dm_os_sys_info;

-- Prior versions:
SELECT physical_memory_in_bytes FROM sys.dm_os_sys_info;

EXEC sp_configure 'max server memory';
Aaron Bertrand
fonte
EXEC sp_configure 'max server memory';também não existe no SQL 2008.
AngryHacker
@AngryHacker Claro que sim (é chamado, max server memory (MB)mas você não precisa digitar tudo). Para vê-lo, você precisa ler a mensagem de erro que informa sobre a opção avançada e, em seguida sp_configure 'show adv', 1; reconfigure with override;. Observe que você também não precisa digitar tudo 'show advanced options'aqui.
Aaron Bertrand
6

A resposta de @ AaronBertrand é ótima. Aqui está uma variação com um pouco mais de informações daqui

SELECT
(physical_memory_in_use_kb/1024) AS Memory_usedby_Sqlserver_MB,
(locked_page_allocations_kb/1024) AS Locked_pages_used_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;

Também uma boa postagem no blog sobre por que o TaskManager não está preparado para a tarefa aqui .

E para obter mais desempenho e magia DMV, você não pode passar pelo blog SQL Performance de Glenn Berry

Rory
fonte