Acabei de pedir à infraestrutura para adicionar memória a uma caixa do SQL Server, a memória total agora é de 16 Gb
Eu configurei a memória máxima no SQL Server para 12 GB.
quando executo a consulta de memória abaixo:
SELECT [ServerName]=@@servername,
[Setting Name]=name,
value,
value_in_use,
[Value (GB)]=CONVERT(decimal(12,2),CONVERT(decimal(12,2), value_in_use)/1024.00),
[description]
FROM master.sys.configurations with(nolock)
WHERE name like '%server memory%'
ORDER BY name OPTION (RECOMPILE);
--Msg 260, Level 16, State 3, Line 12
--Disallowed implicit conversion from data type sql_variant to data type numeric,
--table 'master.sys.configurations', column 'value_in_use'.
--Use the CONVERT function to run this query.
SELECT
CONVERT(decimal(12,2),physical_memory_in_use_kb/1024.00/1024.00 ) AS sql_physical_memory_in_use_GB,
CONVERT(decimal(12,2),large_page_allocations_kb/1024.00/1024.00) AS sql_large_page_allocations_GB,
CONVERT(decimal(12,2),locked_page_allocations_kb/1024.00/1024.00) AS sql_locked_page_allocations_GB,
CONVERT(decimal(12,2),virtual_address_space_reserved_kb/1024.00/1024.00) AS sql_VAS_reserved_GB,
CONVERT(decimal(12,2),virtual_address_space_committed_kb/1024.00/1024.00) AS sql_VAS_committed_GB,
CONVERT(decimal(12,2),virtual_address_space_available_kb/1024.00/1024.00) AS sql_VAS_available_GB,
REPLACE(CONVERT(VARCHAR(50),CAST(page_fault_count AS MONEY),1), '.00','') AS page_fault_count,
memory_utilization_percentage AS sql_memory_utilization_percentage,
CASE WHEN process_physical_memory_low = 1 THEN 'Yes' ELSE 'No' END AS sql_process_physical_memory_low,
CASE WHEN process_virtual_memory_low = 1 THEN 'Yes' ELSE 'No' END AS sql_process_virtual_memory_low
FROM sys.dm_os_process_memory;
SELECT CONVERT(decimal(12,2),committed_kb/1024.00/1024.00 ) AS [SQL Server Committed Memory in GB],
CONVERT(decimal(12,2),committed_target_kb/1024.00/1024.00 ) AS [SQL Server Target Committed Memory in GB],
CONVERT(decimal(12,2),physical_memory_kb/1024.00/1024.00 ) AS [Server Physical Memory in GB],
sql_memory_model_desc
FROM sys.dm_os_sys_info;
Eu entendi isso:
Pergunta:
Por que a memória do SQL Server não é de 12 GB?
Você modificou um parâmetro que permite ao sql atingir essa quantidade de memória RAM. No entanto, ele não o usará até que precise dele. Após um período de atividade de trabalho, você descobrirá que a memória alocada para o cache do buffer terá aumentado.
Mas se não houver atividade de trabalho ou dados para armazenar em cache, o SQL Server não solicitará mais memória ao sistema operacional.
Em vez disso, se você alterar a memória mínima do SQL Server, por exemplo, para 5 GB, descobrirá que o SQL Server reservará essa quantidade para si mesmo. No entanto, essa quantidade de memória ainda será um desperdício sem atividade e sem dados suficientes para armazenamento em cache.