SQL Server 오류 30 일 상담 19 일 째 Truncate 표 작업 은 로그 에 기록 되 지 않 습 니 다.
CREATE DATABASE TruncateTest;
GO
USE TruncateTest;
GO
ALTER DATABASE TruncateTest SET RECOVERY SIMPLE;
GO
CREATE TABLE t1 (c1 INT IDENTITY, c2 CHAR (8000) DEFAULT 'a');
CREATE CLUSTERED INDEX t1c1 on t1 (c1);
GO
SET NOCOUNT ON;
GO
INSERT INTO t1 DEFAULT VALUES;
GO 1280
CHECKPOINT;
GO
위의 테스트 데이터 베이스 복구 모델 은 간단 하기 때문에 모든 Checkpoint 는 로 그 를 차단 합 니 다(간단 하기 위해 서 입 니 다.하하).1 분 후에 일지 에 몇 개의 기록 이 있 는 지 봅 시다.
SELECT COUNT (*) FROM fn_dblog (NULL, NULL);
GO
을 보면 현재 로그 항목 의 숫자 는 2 입 니 다.만약 당신 이 얻 은 숫자 가 2 가 아니라면,데이터 가 2 일 때 까지 Checkpoint 를 한 번 더 하 세 요.현재 로 그 를 알 고 있 습 니 다.로그 의 증 가 는 뒤의 작업 으로 인 한 것 입 니 다.다음은 다음 코드 를 실행 합 니 다.
TRUNCATE TABLE t1;
GO
SELECT COUNT (*) FROM fn_dblog (NULL, NULL);
GO
은 현재 541 개의 로그 기록 이 있 음 을 볼 수 있 습 니 다.Truncate 작업 은 로그 에 기록 해 야 한 다 는 것 이 분명 합 니 다.그러나 이 541 개의 로그 기록 이 1280 개의 데 이 터 를 삭 제 했 기 때문에 Truncate 는 한 줄 한 줄 삭제 하지 않 는 다 는 것 을 알 수 있다.다음 문장 을 실행 하여 로 그 를 보십시오:
SELECT
[Current LSN], [Operation], [Context],
[Transaction ID], [AllocUnitName], [Transaction Name]
FROM fn_dblog (NULL, NULL);
다음은 결과 입 니 다. 그림 1.Truncate 후의 로그(부분)를 보면 로 그 를 통 해 첫 번 째 디 스 플레이 로 Truncate Table 사 무 를 시작 하고 마지막 으로 Deferred Alloc 를 시작 합 니 다.보시 다시 피 Truncate 작업 은 표 의 페이지 와 구역 을 구성 하 는 것 에 불과 합 니 다.다음 코드 는 로그 의 구체 적 인 동작 에 대한 설명 을 볼 수 있 습 니 다.
SELECT
[Current LSN], [Operation], [Lock Information], [Description]
FROM fn_dblog (NULL, NULL);
GO
결 과 는 그림 2: 참조.그림 2.로그 작업 설명(선택)
당신 은 빠 른 회복 의 목적 을 위해 관련 자 물 쇠 를 추가 한 것 을 알 수 있 습 니 다.
위의 로그 에서 보 듯 이 이 동작 은 8 페이지 에 관련 자 물 쇠 를 추가 한 다음 에 전체 구역 을 한꺼번에 방출 합 니 다.방출 후 관련 구역 에 IX 자 물 쇠 를 추가 합 니 다.즉,더 이상 사용 할 수 없습니다.트 랜 잭 션 이 제출 되 어야 deferred-drop 이 진행 되 기 때문에 Truncate table 작업 이 다시 굴 러 갈 수 있 습 니 다.
또한 표 에 비 집합 색인 이 존재 한다 면 조작 방식 도 비슷 합 니 다.모두 배경 스 레 드 에 건 네 주 고 표 와 색인 을 방출 하 는 페이지 입 니 다.방출 된 최소 단 위 는 모든 분배 단원 이다.위 단계 에 따라 네가 직접 시도 해 보면 내 뜻 을 알 수 있 을 것 이다.
PS:Truncate Table 작업 이 스크롤 백 할 수 없 는 잘못된 부분 이 있 습 니 다.저 는 Lock logging and fast recovery 이라는 글 에서 상세 하 게 설명 하 였 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL Truncate 사용법 상세 설명앞에서 소개 한 바 와 같이 우 리 는 truncate 문장의 사용 장면 을 쉽게 얻 을 수 있다.즉,이 표 의 데이터 가 전혀 필요 하지 않 을 때 truncate 를 사용 할 수 있다.일부 데 이 터 를 삭제 하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.