¿Vista rápida de la cantidad de RAM asignada a SQL Server?

15

Con SQL Server 2005, puede ver el Administrador de tareas y, al menos, obtener una visión superficial de la cantidad de memoria asignada a SQL Server.

Con SQL Server 2008, el tamaño de conjunto de trabajo o confirmación nunca supera realmente los 500 MB, aunque el contador de rendimiento SQLServer: Administrador de memoria / memoria total del servidor (KB) establece 16,732,760.

¿Hay alguna configuración en la que realmente muestre la memoria del servidor en el Administrador de tareas? ¿O es el resultado de que cambien la forma en que se usa la memoria en SQL Server

AngryHacker
fuente

Respuestas:

25

NUNCA podría, NUNCA confiar en el Administrador de tareas para que le diga cuánta memoria está usando SQL Server (tal vez esté recordando un sistema de 32 bits con una cantidad muy pequeña de memoria). Deje de usar el Administrador de tareas para esto, punto. Utilice el contador de rendimiento: también puede consultar el contador de rendimiento utilizando DMV:

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

Puede guardarlo como un acceso directo de consulta en Herramientas> Opciones> Medio ambiente> Teclado> Accesos directos de consulta y obtener resultados precisos en una ventana de consulta mucho más rápido que obtener resultados inexactos del Administrador de tareas.

También puede verificar la presión de la memoria (y si puede hacer algo al respecto) utilizando 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
fuente
EXEC sp_configure 'max server memory';tampoco existe en SQL 2008.
AngryHacker
@AngryHacker Claro que sí (se llama max server memory (MB)pero no necesita escribir todo). Para verlo, debe leer el mensaje de error que le informa que es una opción avanzada, y luego sp_configure 'show adv', 1; reconfigure with override;. Tenga en cuenta que tampoco tiene que escribir todo 'show advanced options'aquí.
Aaron Bertrand
6

La respuesta de @ AaronBertrand es genial. Aquí hay una variación con un poco más de información de aquí

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;

También una buena publicación de blog sobre por qué TaskManager no está a la altura aquí .

Y para obtener más rendimiento y magia DMV, no puede pasar el blog SQL Performance de Glenn Berry

Rory
fuente