CACHESTORE_SQLCP SQLプランは、数日後に38 GBを超えます。
「アドホックワークロード用に最適化」オプションをオンにして既に実行しています。(Entity Frameworkとカスタムレポートにより、多くのアドホックが作成されます!)
マルチAZミラーリングを使用するAWS RDS上のSQL Server 2016 SE 3.00.2164.0.v1
実行すると:
DBCC FREESYSTEMCACHE('SQL Plans');
または
DBCC FREEPROCCACHE
または
DBCC FREESYSTEMCACHE ('SQL Plans') WITH MARK_IN_USE_FOR_REMOVAL
または
DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL;
それをクリアしていないようです:
SELECT TOP 1 type, name, pages_kb FROM sys.dm_os_memory_clerks ORDER BY pages_kb desc
type name pages_kb
CACHESTORE_SQLCP SQL Plans 38321048
クエリストアを有効にして実行していましたが、それを無効にして、それが何かを妨げているかどうかを確認しました。それは役に立たなかったようですが、中断しました。
本当に奇妙なのは
SELECT COUNT(*) FROM sys.dm_exec_cached_plans
1〜3程度です(現在実行中のクエリのみが表示されるようです)。ただし、すべてのメモリが予約されていても、何かをクリアしようとする前です。私は何が欠けていますか?
CACHESTORE_SQLCPは、使用可能なすべてのメモリの60%以上を占有しています。これは、メモリ待機が時々発生するため、懸念事項です。さらに、週末にかけて、メモリ不足で待機時間が蓄積されるため、4時間続くルーチンDBCC CHECKDBを強制終了する必要がありました(PHYSICAL_ONLYをオンにするとエラーなしで即座に完了しました)。
このメモリを再利用する方法はありますか(毎晩の再起動以外!?)?
コメント/回答から更新
走るとき
SELECT * FROM sys.fn_my_permissions(NULL,NULL)
私は得る
entity_name subentity_name permission_name
server CONNECT SQL
server CREATE ANY DATABASE
server ALTER ANY LOGIN
server ALTER ANY LINKED SERVER
server ALTER ANY CONNECTION
server ALTER TRACE
server VIEW ANY DATABASE
server VIEW ANY DEFINITION
server VIEW SERVER STATE
server ALTER SERVER STATE
server CREATE SERVER ROLE
server ALTER ANY SERVER ROLE
必要なALTER SERVER STATE
許可が含まれます。
の出力DBCC FREEPROCCACHE
は
DBCCの実行が完了しました。DBCCがエラーメッセージを出力した場合は、システム管理者に連絡してください。
これは標準のメッセージです。RDSがサポートしていない他のDBCC機能は、権限に関するエラーメッセージを表示します。
(1日後、それを再度実行した後、SQLプランはまだ38,321,280 kbです)
コメント/回答から更新
SELECT pool_id, name, cache_memory_kb, compile_memory_kb FROM sys.dm_resource_governor_resource_pools
出力:
pool_id name cache_memory_kb compile_memory_kb
1 internal 38368408 1168080
DBCC FREEPROCCACHE ('internal')
別に何もしません
更新
SQLエラーログは、毎回次のログを記録します。
2017-10-19 14:26:47.22 spid85 SQL Server has encountered 1 occurrence(s) of cachestore flush for the 'Object Plans' cachestore (part of plan cache) due to 'DBCC FREEPROCCACHE' or 'DBCC FREESYSTEMCACHE' operations.
2017-10-19 14:26:47.22 spid85 SQL Server has encountered 1 occurrence(s) of cachestore flush for the 'SQL Plans' cachestore (part of plan cache) due to 'DBCC FREEPROCCACHE' or 'DBCC FREESYSTEMCACHE' operations.
2017-10-19 14:26:47.22 spid85 SQL Server has encountered 1 occurrence(s) of cachestore flush for the 'Bound Trees' cachestore (part of plan cache) due to 'DBCC FREEPROCCACHE' or 'DBCC FREESYSTEMCACHE' operations.
更新
RDSでは、13.00.2164.0.v1から13.00.4422.0.v1へのエンジンバージョンのアップグレードが利用可能です。自動マイナーバージョンアップグレードに設定されていますが、最新の状態に更新されていないようです。今週末に再起動してインストールし、役立つかどうかを確認します。