これについてのご意見をお待ちしています。私はSQLサーバー2008r2 Entを持っています。エド。 64ビット、16コア、64 GB RAM。 20111014の時点で完全にパッチが適用されたSQLサーバーのインスタンスが1つあります。
最大RAMは60000MBに設定されています。数日間オンラインになった後のタスクマネージャーによると、空きRAMの量は0です。
最大RAMを53GB未満に変更すると、数日後に安定し、空きRAMができます。
タスクマネージャに従ってRAMを割り当てるのはSQLプロセスです。どのようにすれば問題が実際に何であるかを理解できますか?言うまでもなく、私はすでに多くのテストを行いましたが、まだ私の好みに合わせてこれを解決していません。そして、ああ、利用可能なRAMの空きが0になると、典型的なメモリ不足の遅延が発生しなくなります。
更新1:
RAM https://dba.stackexchange.com/a/7062/2744 )に関連する別のQ/Aに触発されました。 RAMの用途.
SELECT TOP ( 10 )
[type] AS [Memory Clerk Type] ,
SUM(single_pages_kb) AS [SPA Mem, Kb]
FROM sys.dm_os_memory_clerks
GROUP BY [type]
ORDER BY SUM(single_pages_kb) DESC
OPTION ( RECOMPILE ) ;
SELECT DB_NAME(database_id) AS [Database Name] ,
COUNT(*) * 8 / 1024.0 AS [Cached Size (MB)]
FROM sys.dm_os_buffer_descriptors
--WHERE database_id > 4 -- system databases
-- AND database_id <> 32767 -- ResourceDB
GROUP BY DB_NAME(database_id)
ORDER BY [Cached Size (MB)] DESC
OPTION ( RECOMPILE ) ;
これらによって示される使用量は、最初に選択されます7948432 Kb 2番目の44030,57812 MBは、SQLサーバーで使用される合計約52GBです...なので、残りの部分はどこにありましたかRAM go?:-)タスクマネージャーは、現在キャッシュされている363、利用可能な401、空き40を表示し、sqlservr.exeにはメモリプライベートセット64 459 656があります。最大RAMは以前と同様に60000MBに設定されています。
SQL Serverの最大メモリ設定は、バッファープールの使用のみの制限を定義します。その制限を超えて、変動するが重要な割り当てが必要になります。
Jonathan Kehayias's 、 Christian Bolton および John Samson は、トピックに関するレベル300/400の投稿を持っています。 Brent Ozar には、読みやすい記事があるので、読み始めるのがよいでしょう。
前述のように、バッファプールとプロシージャキャッシュは、最大サーバーメモリによって制御される唯一のものです。 SQL Serverには、その制限を超えてメモリを消費する可能性のあるものが他にもたくさんあります。それらには以下が含まれます(ただし、これらに限定されません)。
SQL 2012以降、single_pages_kbはそのDMVのpages_kbに置き換えられました。 https://msdn.Microsoft.com/en-us/library/ms175019.aspx?f=255&MSPPError=-2147217396
したがって、質問に含まれているクエリを実行する場合は、2012 +サーバーで、single_文字列を削除します。
http://msdn.Microsoft.com/en-us/library/ms178067.aspx
サーバーの最大メモリを減らすには、SQL Serverを再起動してメモリを解放する必要がある場合があります。
私の理解では、バッファプールのページがディスクに書き込まれていない場合は、書き込まれるまで解放されません。
最大メモリ設定を下げると、SQL Serverはダーティページをフラッシュしますか?
彼は、perfmonのバッファマネージャを監視して、それを確認できます。 Perfmon-> SQLServer:Buffer Manager:データベースページ