SQL Server 오류 30 일 상담 15 일 째 CheckPoint 는 제출 한 트 랜 잭 션 만 디스크 에 기록 합 니 다.

2349 단어 CheckPoint사무.
잘못된 영역\#15:CheckPoint 는 제출 한 사 무 를 디스크 에 만 기록 하 는 오류 입 니 다.이 오 류 는 로그 와 복구 시스템 에 대한 전면적 인 이해 가 부족 해서 오래 되 었 습 니 다.CheckPoint 는 지난번 CheckPoint 이후 메모리 에서 변 경 된 모든 페이지 를 디스크 에 기록 하거나 이전 CheckPoint 에서 메모리 의 더러 운 페이지 를 읽 어 디스크 에 기록 합 니 다.트 랜 잭 션 이 제출 되 었 든 안 되 었 든 영향 을 주 는 페이지 는 Checkpoint 에 디스크 를 다시 씁 니 다.그러나 TempDB 의 경우 예외 로 TempDB 의 Checkpoint 이벤트 주기 에는 더러 운 페이지 를 디스크 에 다시 쓰 는 절차 가 포함 되 어 있 지 않 기 때문이다.더 알 고 싶다 면 다음 글 을 읽 으 세 요.

  • Technet 잡지 기사:Understanding Logging and Recovery in SQL Server

  • 박문:How do checkpoints work and what gets logged

  • 박문:What does checkpoint do for tempdb?
  •     CheckPoint 가 어떻게 작 동 하 는 지 아래 두 개의 추적 표 시 를 사용 할 수 있 습 니 다.

  • 3502:CheckPoint 가 시작 되 고 끝 날 때 관련 정 보 를 오류 로그 에 기록 합 니 다.

  • 3504:CheckPoint 에서 디스크 에 있 는 페이지 의 정 보 를 오류 로그 에 기록 합 니 다
  •     이 추적 표 시 를 사용 하기 위해 서 는 모든 스 레 드 를 열 어야 합 니 다.그렇지 않 으 면 오류 로그 에서 아무것도 볼 수 없습니다.DBCC TRACEON(3502,3504,-1)을 사용 하여 모든 스 레 드 에 대해 이 두 개의 추적 표 시 를 엽 니 다.
        아래 코드 는 Checkpoint 가 제출 하지 않 은 더러 운 페이지 를 디스크 에 다시 쓰 고 다음 절 차 를 따 를 것 임 을 증명 할 수 있 습 니 다.
     
    CREATE DATABASE CheckpointTest; GO USE CheckpointTest; GO
    CREATE TABLE t1 (c1 INT IDENTITY, c2 CHAR (8000) DEFAULT 'a'); CREATE
    CLUSTERED INDEX t1c1 on t1 (c1); GO
    SET NOCOUNT ON; GO
    CHECKPOINT; GO
    DBCC TRACEON (3502, 3504, -1); GO
    아래 의 그 사 무 는 10MB 의 더러 운 페이지 를 만 들 고 이어서 CheckPoint[code]BEGIN TRAN 을 진행 합 니 다.GO INSERT INTO t1 DEFAULT VALUES; GO 1280 CHECKPOINT; GO[html]로그 보기:2012-10-17_092031
     우 리 는 업무 가 제출 되 지 않 은 상태 에서 도 더러 운 페이지 가 디스크 에 기록 된다 는 것 을 분명히 알 수 있다.

    좋은 웹페이지 즐겨찾기