回答:
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は、グレンベリーのブログです。