Tenho um servidor com 12 GB de RAM física. Acabei de baixar a 'Max Server Memory (MB)'
configuração de 10 GB para 8 GB.
Se eu olhar para a memória comprometida dos processos no Perfmon, vejo:
select *
from sys.dm_os_performance_counters
where [object_name] like 'SQLServer:Memory Manager%';
go
Memória do servidor de destino (KB): 8388608 Memória total do servidor (KB): 8388608
Mostrando que o SQL Server já liberou os 2 GB adicionais de memória do Buffer Pool.
No entanto, se eu olhar para o sys.dm_os_sys_info
:
select [bpool_committed]
, [bpool_commit_target]
, [bpool_visible]
from sys.dm_os_sys_info;
go
Eu recebo resultados inconsistentes:
bpool_committed = 1048576 bpool_commit_target = 1048576 bpool_visible = 1048576
Não deveria sys.dm_os_sys_info
refletir as informações nos contadores de desempenho?
Estou executando o Microsoft SQL Server 2005 SP1 no Windows Server 2003.
Não há incoerência:
Ambos Perfmon e
sys.dm_os_sys_info
show 8 GB;[bpool_visible], [bpool_commit_target] and [bpool_committed]
- no SQL 2005, tudo isso é definido como "Número de buffers de 8 KB ..." ( http://msdn.microsoft.com/en-us/library/ms175048(v=sql.90).aspx ) , então você tem que multiplicar o resultado por 8 para obter KB; A partir do SQL 2008 R2 você não precisa mais fazer a multiplicação.Se você quiser usar uma multiplicação dentro da consulta, tente:
Os valores eram realmente inconsistentes e voltavam ao normal após o reinício da instância.
Eu recomendo não usar o
sys.dm_os_sys_info
para esse tipo de informação, pois não é confiável e, em vez disso, usar os contadores de desempenho.