SQL Server 2012 Expressをプライマリデータストアとして埋め込む予定のアプリケーションを構築しています。私の開発マシン(3GB RAMのWin7-32)でテストするとき、公開されている hardwareから予想されるように、sqlservr.exe
プロセスが1GBを超えるRAMを使用することを確認していません。スケーリングの制限 SQL ServerのExpressエディションの場合。
次に、アプリケーションをサーバーグレードのマシン(Win Server 2008R2 64ビット、16 GB RAM)に移動してパフォーマンスを評価しましたが、sqlservr.exe
プロセスが約9.5 GBのRAMとそこにとどまった。
何回か再起動して効果があるかどうかを確認しましたが、毎回プロセスがすぐに9.5 GBに戻りました。 SQL Server ExpressでRAMを使用できるようになったことは確かに嬉しいですが、RAMの使用に基づくパフォーマンスレベルに依存しないように、これが予想される動作であるかどうかを知りたいです。それは間違っています。
SELECT @@VERSION
によると、サーバーマシン上のSQL Serverのバージョンは次のとおりです。
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
Oct 19 2012 13:38:57
Copyright (c) Microsoft Corporation
Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
私の9.5GB番号は、タスクマネージャーの「プライベートワーキングセット」番号から取得されました。 DBCC memorystatus
からの出力の最初の表は次のとおりです(現在はアイドル状態のサーバー上)。
PROCESS/SYSTEM COUNTS
Available Physical Memory 5543616512
Available Virtual Memory 8734902411264
Available Paging File 22471094272
Working Set 9664200704
Percent of Committed Memory in WS 99
Page Faults 2627510
System physical memory high 1
System physical memory low 0
Process physical memory low 0
Process virtual memory low 0
sys.dm_os_memory_clerks
に対するspaghettidbaの推奨クエリからの出力:
MEMORYCLERK_SQLBUFFERPOOL 1410
OBJECTSTORE_LOCK_MANAGER 256
MEMORYCLERK_SQLCLR 38
MEMORYCLERK_SOSNODE 26
CACHESTORE_SQLCP 11
加えて、合計で30 MB未満になる、さらに小さいエントリが10個まで増えます。
SQL Expressのバッファプールは1GBに制限されていますが、SQL Serverには他にも多くのメモリプールがあります。驚いたのは、非バッファメモリプールの過度の使用です。メモリクラークごとのメモリ使用量を確認するには、次のコマンドを実行します。
SELECT type, SUM(pages_kb)/1024 AS MemoryMB
FROM sys.dm_os_memory_clerks
GROUP BY type
ORDER BY 2 DESC
お役に立てれば