반응형
  1. /**********************************************************************************************
    -- 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
    */

반응형

+ Recent posts