Meu conhecimento sobre o assunto sugere que o contador perf SQL Server:Memory Manager: Total Server Memory fornece apenas memória do buffer pool. Há uma coluna chamada physical_memory_in_use em um DMV chamado sys.dm_os_process_memor que fornece um conjunto de trabalho físico.
Mas eu não tenho certeza ...
existe um contador DMV ou perf que poderia me informar o total (buffer pool + non buffer pool, ou seja, MemToLeave) memória física usada pelo processo do SQL Server para SQL Server 2008 R2 de 64 bits e SQL 2012 em execução no sistema operacional Windows de 64 bits?
Não tenho certeza sobre uma única exibição de memória, mas você pode obter as informações de duas consultas. O primeiro (retirado das consultas DMV de Glenn Berry ) aproveita sys.dm_os_buffer_descriptors e mostrará o buffer pool por banco de dados:
A segunda consulta que montei examinando sys.dm_os_memory_cache_entries para me mostrar informações que não são do buffer pool:
Há uma série de DMVs relacionados à memória, indicados por
dm_os_memory_*
. Você pode usá-los para investigar como a memória é usada pelo SQL Server em vários níveis.Me deparei com esta solução sugerida por Joe Sack (SQLSkills agora)
Encontre a memória do pool sem buffer (MemToLeave) em "Bytes privados"
Parece (apenas testado e parece certo) para mim que em 64 bits Process: sqlservr: Private Bytes" pode fornecer a memória total usada pelo SQL Server (buffer pool + non buffer pool), considerando que as páginas de bloqueio na memória não estão habilitadas.
Se as páginas de bloqueio na memória estiverem ativadas, os bytes privados fornecerão a você a memória total sem buffer pool usada pelo processo do servidor SQL.