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


22

SQL Server 2012 Expressをプライマリデータストアとして埋め込む予定のアプリケーションを構築しています。開発マシン(3GB RAMのWin7-32​​)でテストするときsqlservr.exe、公開されたハードウェアのスケーリング制限から予想されるように、1GBを超えるRAMを使用するプロセスを観察しませんでした、SQL ServerのExpressエディションの。

次に、アプリケーションをサーバーグレードのマシン(16 GB RAMを搭載したWin Server 2008R2 64ビット)に移動して、そこでパフォーマンスを評価しましたが、 sqlservr.exeプロセスが約9.5 GBのRAMに急速に拡大し、そこに留まったことがわかりました。

数回再起動して、効果があるかどうかを確認しましたが、毎回、プロセスは急速に〜9.5GBに戻りました。これで、SQL Server ExpressでRAMを使用できるようになりましたが、これが予想される動作であるかどうかを知りたいので、不適切なRAM使用量に基づくパフォーマンスレベルに依存することはありません。

参考までに、サーバーマシン上のSQL ServerのバージョンSELECT @@VERSIONは次のとおりです。

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

次に関するspaghettidbaの推奨クエリからの出力sys.dm_os_memory_clerks

MEMORYCLERK_SQLBUFFERPOOL   1410
OBJECTSTORE_LOCK_MANAGER    256
MEMORYCLERK_SQLCLR          38
MEMORYCLERK_SOSNODE         26
CACHESTORE_SQLCP            11

さらに、合計で30 MB未満のエントリがさらに10個まで追加されます。

回答:


12

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

お役に立てれば


このクエリからの出力は次の MEMORYCLERK_SQLBUFFERPOOL 1410 OBJECTSTORE_LOCK_MANAGER 256 MEMORYCLERK_SQLCLR 38 MEMORYCLERK_SOSNODE 26 CACHESTORE_SQLCP 11 とおりです。さらに、合計が30 MB未満の小さなものがいくつかあります。私には奇妙に思えます。-arg-コメントのフォーマット。
ダン

うーん。MEMORYCLERK_SQLBUFFERPOOLだけでも1GBの制限を超えるため、バグに直面している可能性があります。私が奇妙だと思うのは、クエリに表示せずに9.5GBを使用していることです。
スパゲッティ

sys.dm_os_memory_clerks(single_pages_kb以外)には他にも興味深い列があると思います。MEMORYCLERK_SQLBUFFERPOOLの場合は、virtual_memory_committed_kbの方が関連性が高いようです。
ラズバンソコル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.