데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

SQL Server2012 Checkpoint 제어

jevida(강성욱) 2016.01.11 02:51 Views : 5260

SQL Server2012 Checkpoint 제어

   

-      Version : SQL Server 2012

   

SQL Server 데이터베이스 엔진은 자동으로 현재의 데이터베이스버퍼캐시에 있는 데이터를 디스크로 기록하는 CHECKPOINT 명령을 실행한다.

SQL Server 엔진은 성능상의 이유로 변경 내용이 있을 때마다메모리(버퍼캐시)에서 데이터베이스 페이지를 수정하며 이러한페이지를 디스크에 기록하지는 않는다. 대신 데이터베이스 엔진은 각 데이터베이스에서 정기적으로 CHECKPOINT를 실행 한다. CHECKPOINT는 현재 메모리내의 수정된 페이지(더티페이지)와 메모리의 트랜잭션 로그정보를 디스크에 쓰고 트랜잭션 로그에 대한 정보도 기록한다.

이 기능은 SQL Server의 예기치 않은 장애나 시스템 충돌로인하여 데이터베이스를 복구하는데 데이터의 안정성 및 시간을 절약할 수 있는 방법이 된다.

[CHECKPOINT]

: http://msdn.microsoft.com/ko-kr/library/ms189573.aspx

http://msdn.microsoft.com/ko-kr/library/ms188748.aspx

   

SQL Server 2012의 TARGET_RECOVERY_TIME옵션과 recovery interval 옵션의 상호 작용

의 TARGET_RECOVERY_TIME

recovery interval

사용되는 검사점 유형

0

0

복구 간격이 1분인 자동 검사점

0

>0

복구 간격이 recovery interval 옵션 값 사용

>0

해당 사항 없음

복구 간격이 TARGET 옵션 값 사용.(초)

   

   

SSMS를 실행하여 다음 쿼리를 실행하면 해당 데이터베이스의 TARGET_RECOVERY_TIME 값을 확인 할 수 있다.

SELECT TARGET_RECOVERY_TIME_IN_SECONDS FROM SYS.DATABASES WHERE NAME = 'ADVENTUREWORKS2012'

   

 

      

   

   

SSMS의 UI로 확인도가능 하다. 다음과 같이 해당 데이터베이스에서 마우스 오른쪽을 클릭하여 [속성]을 선택 한다.

   

   

[데이터베이스 속성]창이나타나면 [옵션] 탭에서 [복구] – [대상 복구 시간(초)]에서확인 가능 하다.

   

   

스크립트를 이용하여 TARGET_RECOVERY_TIME 값을 변경하자. 실습에서는 120초 마다CHECKPOINT가 발생하도록 설정 하였다.

ALTER DATABASE AdventureWorks2012 SET TARGET_RECOVERY_TIME = 120 SECONDS

GO

   

SELECT TARGET_RECOVERY_TIME_IN_SECONDS FROM SYS.DATABASES WHERE NAME = 'ADVENTUREWORKS2012'

   

   

   

SSMS의 UI에서 변경도가능하다. 변경 방법은 위에서 확인한 [대상 복구 시간(초)]에서 변경하면 적용 된다.

   

   

[CHECKPOINT 제어의 장점]

-      특정 데이터베이스의 전체 복구 시간을 줄일 수 있다.

-      IO 비용을 고려하여 CHECKPOINT를 조절 할 수 있다.

   

[CHECKPOINT 제어의 단점]

-      매우 바쁜 OLTP 환경에서 성능 충돌이 발생할 수도 있다. 반드시 테스트 환경에서 검증하고 적용하자.



강성욱 / jevida@naver.com

Microsoft SQL Server MVP

Blog : http://sqlmvp.kr

Facebook : http://facebook.com/sqlmvp




No. Subject Author Date Views
1670 Spatial Indexing 개요 (공간 인덱스) jevida(강성욱) 2016.01.11 7515
1669 Event Session을 이용한 Session Health check jevida(강성욱) 2016.01.11 6911
1668 SQL Server 2012 XML 플랜을 통한 병렬화 되지 않는 이유 살펴보기 jevida(강성욱) 2016.01.11 7214
1667 Event Session을 이용한 SQL OS Session Schedule check jevida(강성욱) 2016.01.11 7294
1666 Event Session을 이용한 Memory Health check jevida(강성욱) 2016.01.11 6953
1665 Event Session을 이용한 CPU Health check jevida(강성욱) 2016.01.11 8174
1664 DMV를 이용한 I/O Health check jevida(강성욱) 2016.01.11 7330
1663 CONCAT 함수 (문자열 연결하기)와 주의 사항 jevida(강성욱) 2016.01.11 27844
1662 SQL Server 2012 Columnstore Index jevida(강성욱) 2016.01.11 7489
1661 SQL Server 2012 File Stream / Table 관련 DMV jevida(강성욱) 2016.01.11 4849
1660 SQL Server2012 DMV – 메모리 덤프, 서비스, 구성 확인 jevida(강성욱) 2016.01.11 4702
1659 SQL Server2012 향상된 디버깅 기능 jevida(강성욱) 2016.01.11 4380
1658 SQL Server2012 매개 변수 구성 jevida(강성욱) 2016.01.11 3490
1657 SQL Server2012 도움말 설치 jevida(강성욱) 2016.01.11 3451
» SQL Server2012 Checkpoint 제어 jevida(강성욱) 2016.01.11 5260
1655 SSIS 패지키의 메타데이터 유효성 검사 중지하기 jevida(강성욱) 2016.01.11 2929
1654 SSIS 로그 보관기간 설정 (CleanUp 기간 설정) jevida(강성욱) 2016.01.11 4276
1653 SSIS 패키지 보호 레벨 jevida(강성욱) 2016.01.11 3867
1652 DATABASE의 TABLE 및 COLUMN COMMENT 출력 joe 2015.09.10 7601
1651 백업 히스토리 모니터링 jevida(강성욱) 2015.03.31 11611





XE Login