반응형
- /**********************************************************************************************
-- Title : [2k5] 정합성 관련한 재컴파일 발생원인 데모
-- Reference : mcpworld.com
-- Key word : recompile 재컴파일
**********************************************************************************************/
------------------------------------------
--DB Detach로 인한 재컴파일 발생
------------------------------------------
USE AdventureWorks;
GO
--기존 실행 계획 및 실행 버퍼 풀 초기화
DBCC FREEPROCCACHE;
DBCC DROPCLEANBUFFERS;
GO
--실행 계획이 없음 확인
SELECT bucketid, cacheobjtype, objtype, objid, usecounts, sql FROM sys.syscacheobjects;
GO
--임의 AD-Hoc 쿼리를 실행 시켜 실행 계획을 캐싱
SELECT ProductID, SalesOrderID, LineTotal FROM Sales.SalesOrderDetail WHERE ProductID = 984;
GO
--AD-Hoc 실행 계획이 생성되었음을 확인
SELECT bucketid, cacheobjtype, objtype, objid, usecounts, sql FROM sys.syscacheobjects;
GO
--임의 DB 생성
CREATE DATABASE test_db;
GO
SP_HELPDB test_db;
/*
test_db 1 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\test_db.mdf
test_db_log 2 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\test_db_log.LDF
*/
SP_DETACH_DB test_db;
GO
--전체 실행 계획이 삭제되었음
SELECT bucketid, cacheobjtype, objtype, objid, usecounts, sql FROM sys.syscacheobjects;
GO
--ATTACH 하는 경우에는 실행 계획이 지워지지 않음.
SP_ATTACH_DB 'test_db', @filename1='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\test_db.mdf',
@filename2='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\test_db_log.LDF'
GO
--CLEAN UP
/*
DROP DATABASE test_db;
*/
------------------------------------------
--Reconfigure로 인한 재컴파일 발생
------------------------------------------
USE AdventureWorks;
GO
--기존 실행 계획 및 실행 버퍼 풀 초기화
DBCC FREEPROCCACHE;
DBCC DROPCLEANBUFFERS;
GO
--실행 계획이 없음 확인
SELECT bucketid, cacheobjtype, objtype, objid, usecounts, sql FROM sys.syscacheobjects;
GO
--임의 AD-Hoc 쿼리를 실행 시켜 실행 계획을 캐싱
SELECT ProductID, SalesOrderID, LineTotal FROM Sales.SalesOrderDetail
WHERE ProductID = 966 ORDER BY ProductID;
GO
--adhoc 실행 계획이 생성되었음을 확인
SELECT bucketid, cacheobjtype, objtype, objid, usecounts, sql FROM sys.syscacheobjects;
GO
--Configure 변경 : 실행 계획 Clear 하지 않음
SP_CONFIGURE 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE;
GO
--실행 계획이 여전히 존재
SELECT bucketid, cacheobjtype, objtype, objid, usecounts, sql FROM sys.syscacheobjects;
GO
--Configure 변경 : 실행 계획 Clear
SP_CONFIGURE 'max degree of parallelism', 1;
RECONFIGURE WITH OVERRIDE;
GO
--실행 계획 제거되었음.
SELECT bucketid, cacheobjtype, objtype, objid, usecounts, sql FROM sys.syscacheobjects;
GO
--CLEAN UP
/*
SP_CONFIGURE 'max degree of parallelism', 0;
RECONFIGURE WITH OVERRIDE;
GO
SP_CONFIGURE 'show advanced options', 0;
RECONFIGURE WITH OVERRIDE
GO
*/
반응형