계획 캐시를 지우는 여덟 가지 방법
1. 전체 인스턴스의 계획 캐시에서 모든 요소를 제거하십시오.
DBCC FREEPROCCACHE;
이를 사용하여 계획 캐시를 신중하게 지 웁니다. 계획 캐시를 비우면 예를 들어 저장 프로 시저가 캐시에서 재사용되는 대신 재 컴파일됩니다. 이로 인해 쿼리 성능이 일시적으로 일시적으로 저하 될 수 있습니다.
2. 전체 인스턴스에 대한 계획 캐시를 비우고 정기적 인 완료 메시지를 억제하십시오.
"DBCC 실행이 완료되었습니다. DBCC가 오류 메시지를 인쇄하면 시스템 관리자에게 문의하십시오."
DBCC FREEPROCCACHE WITH NO_INFOMSGS;
3. 전체 인스턴스에 대해 임시 및 준비된 계획 캐시를 비 웁니다.
DBCC FREESYSTEMCACHE ('SQL Plans');
4. 하나의 자원 풀에 대해 임시 및 준비된 계획 캐시를 비 웁니다.
DBCC FREESYSTEMCACHE ('SQL Plans', 'LimitedIOPool');
5. 하나의 자원 풀에 대한 전체 계획 캐시를 비 웁니다.
DBCC FREEPROCCACHE ('LimitedIOPool');
6. 하나의 데이터베이스에 대한 계획 캐시에서 모든 요소를 제거합니다 (SQL Azure에서는 작동하지 않음).
-- Get DBID from one database name first
DECLARE @intDBID INT;
SET @intDBID = (SELECT [dbid]
FROM master.dbo.sysdatabases
WHERE name = N'AdventureWorks2014');
DBCC FLUSHPROCINDB (@intDBID);
7. 현재 데이터베이스에 대한 계획 캐시 지우기
USE AdventureWorks2014;
GO
-- New in SQL Server 2016 and SQL Azure
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
8. 캐시에서 하나의 쿼리 계획 제거
USE AdventureWorks2014;
GO
-- Run a stored procedure or query
EXEC dbo.uspGetEmployeeManagers 9;
-- Find the plan handle for that query
-- OPTION (RECOMPILE) keeps this query from going into the plan cache
SELECT cp.plan_handle, cp.objtype, cp.usecounts,
DB_NAME(st.dbid) AS [DatabaseName]
FROM sys.dm_exec_cached_plans AS cp CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
WHERE OBJECT_NAME (st.objectid)
LIKE N'%uspGetEmployeeManagers%' OPTION (RECOMPILE);
-- Remove the specific query plan from the cache using the plan handle from the above query
DBCC FREEPROCCACHE (0x050011007A2CC30E204991F30200000001000000000000000000000000000000000000000000000000000000);
출처 1 2 3