FreeProcCacheとFreeSystemCacheの違い


12

現在DBCC FREEPROCCACHE、実行中のSQLクエリ間でバッファプールから情報を消去するときに実行します。しかし、私はこの Technetの記事を参照していましたDBCC FREESYSTEMCACHE。どのキャッシュがFREESYSTEMCACHEワイプFREEPROCCACHEしないのですか?

回答:


25

FREESYSTEMCACHEはFREEPROCCACHEが消去しないキャッシュを消去しますか?

SQL Serverには多くのシステムキャッシュがあります。SQL 2008R2について言及しています(テストしました)。

以下のクエリは、利用可能なすべてのキャッシュを返します。

--- ONLY for Educational purpose. Don't attempt to run on PROD !!

select 'DBCC freesystemcache ('+''''+name+''''+')'  from   sys.dm_os_memory_clerks group by name
-- 155 rows

たとえば、実行するすべてのキャッシュをクリアしたい場合

DBCC FREESYSTEMCACHE ('ALL')

特定のキャッシュをクリアするには、実行できます

DBCC FREESYSTEMCACHE ('userdatabase') -- cleans cache for specific user database
DBCC FREESYSTEMCACHE ('tempdb')  -- clears cache for tempdb
DBCC FREESYSTEMCACHE ('Temporary Tables & Table Variables') -- clears all the temp table and variables
.. and many more (see above 155 rows returned from sql server 2008R2)

FREEPROCCACHEを使用すると、その詳細レベルで上記のすべてをクリアすることはできません。

FREEPROCCACHE ==> BOLから

プランキャッシュからすべての要素を削除するか、プランハンドルまたはSQLハンドルを指定してプランキャッシュから特定のプランを削除するか、指定したリソースプールに関連付けられているすべてのキャッシュエントリを削除します。

したがって、本質的には、プランハンドルまたはプール名を持つ特定のプランをキャッシュから削除する機能を備えたプランキャッシュにのみ関連すると考えることができます。

Fun with DBCC FREEPROCCACHEは、グレンベリーのブログです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.