반응형
- /**********************************************************************************************
-- Title : [2k5] 테이블 및 임시테이블의 통계 갱신 Threshold 데모
-- Reference : mcpworld.com
-- Key word : 임계값 threshold 임시테이블 통계
**********************************************************************************************/
/* 프로파일러에서 Performance - Auto Stats 이벤트만 선택한 후 수행 */
--CLEAN UP
/*
USE MASTER
GO
DROP DATABASE TESTDB
GO
*/
--임시 데이터베이스 생성
CREATE DATABASE TESTDB
GO
USE TESTDB
GO
--단계 1) 임시 테이블 생성
/*
DROP TABLE #TESTTABLE1
GO
*/
CREATE TABLE #TESTTABLE1
(
SEQ INT IDENTITY,
NOWTIME DATETIME DEFAULT(GETDATE())
-- , c nvarchar(100) default (replicate('a',100))
)
GO
--기존 실행 계획 및 실행 버퍼 풀 초기화
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
GO
---------------------------------------
--테스트 시작
---------------------------------------
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
--현재 행 수 : 0 - 통계 생성 발생 (Created : SEQ)
--단계 2) n의 값 변화
INSERT #TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
--현재 행 수 : 1 - 통계 갱신 (Updated: #TESTTABLE1._WA_Sys_00000001_5165187F)
INSERT #TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
INSERT #TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
INSERT #TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
INSERT #TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
INSERT #TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
INSERT #TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
--현재 행 수 : 7 - 통계 갱신 (Updated: #TESTTABLE1._WA_Sys_00000001_5165187F)
INSERT #TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
INSERT #TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO 492
INSERT #TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
INSERT #TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
INSERT #TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
INSERT #TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
INSERT #TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
INSERT #TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
INSERT #TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM #TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
--현재 행 수 : 507 - 통계 갱신 (Updated: #TESTTABLE1._WA_Sys_00000001_5165187F)
/*
임시테이블 :
통계 생성 후, 1 ->7 -> 507 번째 통계 갱신 발생
*/
--단계 3) 임시 테이블 생성 - 일반 테이블
/*
DROP TABLE TESTTABLE1
GO
*/
CREATE TABLE TESTTABLE1
(
SEQ INT IDENTITY,
NOWTIME DATETIME DEFAULT(GETDATE())
)
GO
--기존 실행 계획 및 실행 버퍼 풀 초기화
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
GO
---------------------------------------
--테스트 시작
---------------------------------------
SELECT COUNT(*) FROM TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
--현재 행 수 : 0 - 통계 생성 발생 (Created : SEQ)
--단계 4) n의 값 변화
INSERT TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
--현재 행 수 : 1 - 통계 갱신 (Updated: TESTTABLE1._WA_Sys_00000001_7D78A4E7)
INSERT TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO 499
INSERT TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
--현재 행 수 : 501 - 통계 갱신 (Updated: TESTTABLE1._WA_Sys_00000001_7D78A4E7)
INSERT TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO 599
--현재 행 수 : 1100
INSERT TESTTABLE1 DEFAULT VALUES
SELECT COUNT(*) FROM TESTTABLE1 WHERE SEQ >0 OPTION (RECOMPILE)
GO
--현재 행 수 : 1101 - 통계 갱신 (Updated: TESTTABLE1._WA_Sys_00000001_7D78A4E7)
/*
일반테이블 :
통계 생성 후, 1 -> 501 -> 1101 번째 통계 갱신 발생
*/
--CLEAN UP
/*
USE MASTER
GO
DROP DATABASE TESTDB
GO
*/
반응형