私は12GBの物理RAMを搭載したサーバーを持っています。 'Max Server Memory (MB)'
設定を10GBから8GBに下げました。
Perfmonでプロセスのコミットされたメモリを見ると、次のことがわかります。
select *
from sys.dm_os_performance_counters
where [object_name] like 'SQLServer:Memory Manager%';
go
ターゲットサーバーメモリ(KB):8388608 合計サーバーメモリ(KB):8388608
SQLServerがバッファプールから追加の2GBのメモリをすでに解放していることを示しています。
ただし、sys.dm_os_sys_info
を見ると:
select [bpool_committed]
, [bpool_commit_target]
, [bpool_visible]
from sys.dm_os_sys_info;
go
一貫性のない結果が得られます:
bpool_committed = 1048576 bpool_commit_target = 1048576 bpool_visible = 1048576
sys.dm_os_sys_info
はパフォーマンスカウンターの情報を反映すべきではありませんか?
Windows Server2003でMicrosoftSQL Server 2005SP1を実行しています。
値は確かに一貫性がなく、インスタンスの再起動後に通常に戻りました。
信頼性が低く、代わりにパフォーマンスカウンターを使用するため、この種の情報にはsys.dm_os_sys_info
を使用しないことをお勧めします。
矛盾はありません:
1048576 * 8 = 8388608 KB => 8 GB;
Perfmonとsys.dm_os_sys_info
はどちらも8GBを示しています。
[bpool_visible], [bpool_commit_target] and [bpool_committed]
-SQL 2005では、これらはすべて「8 KBバッファの数...」( http://msdn.Microsoft.com/en -us/library/ms175048(v = sql.90).aspx )なので、KBを取得するには結果に8を掛ける必要があります。 SQL 2008 R2以降、乗算を行う必要はありません。
クエリ内で乗算を使用する場合は、次を試してください。
SELECT CAST((bpool_committed * 8) / (1024.0 * 1024.0) AS DECIMAL(20, 2)) AS buffer_pool_committed_memory_in_GB
, CAST((bpool_commit_target * 8) / (1024.0 * 1024.0) AS DECIMAL(20, 2)) AS buffer_pool_target_memory_in_GB
, CAST((bpool_visible * 8) / (1024.0 * 1024.0) AS DECIMAL(20, 2)) AS buffer_pool_visible_memory_in_GB
FROM sys.dm_os_sys_info;