web-dev-qa-db-ja.com

SQL Server 2012 Expressがサーバーで9.5GBのRAM=)を使用するのはなぜですか?

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個まで増えます。

22
Dan

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

お役に立てれば

12
spaghettidba