일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 가장 긴 팰린드롬 파이썬
- 반도체 설계 파이썬
- 역사 파이썬
- 프로그래머스 순위
- 백준 11054.가장 긴 바이토닉 부분 수열
- 백준 1613 역사
- 가장 긴 바이토닉 부분 수열 파이썬
- 프로그래머스 순위 파이썬
- 베스트앨범 파이썬
- 백준 2146 다리 만들기
- 백준 1043 거짓말 파이썬
- 다중 컬럼 NOT IN
- SWEA
- 트리의 지름 파이썬
- 백준 1167 트리의 지름 파이썬
- SQL SERVER 장비교체
- 프로그래머스 가장 긴 팰린드롬
- 프로그래머스 베스트앨범
- 다리 만들기 파이썬
- 프로그래머스 여행경로
- 프로그래머스 등굣길
- 게임 개발 파이썬
- 램프 파이썬
- 등굣길 파이썬
- 백준 1238 파티 파이썬
- 백준 2352 반도체 설계 파이썬
- SQL SERVER MIGRATION
- 백준 1034 램프 파이썬
- 백준 1516 게임 개발
- 순위 파이썬
- Today
- Total
공부, 기록
[SQL SERVER] DROP 과 TRUNCATE 는 정말 로그가 안 남을까 본문
DROP과 TRUNCATE는 실제 명령이 로그를 생성하지 않는다고 오해한다
하지만 일부 LOG가 생성이되고 (메타 데이터와 페이지, 익스텐트와의 연결을 끊는 상황)
백그라운드 프로세스의 지연된 삭제에 의해 트랜잭션 로그에는 익스텐트 삭제가 기록으로 남는다
일반적으로 테이블의 0.3~0.4%의 크기가 로그 파일에 기록이되고 기록된 로그는 AG, 미러링, 로그 복제의 경우 전달이 된다.
다만 백그라운드 프로세스에서 해당 삭제 처리는 하나의 트랜잭션이 아닌 여러개의 트랜잭션으로 나누어져서 처리가되어 큰 이슈는 없다고 한다....
TEST
DROP TABLE ~~~
SELECT
[Current LSN],
[Operation],
[Context],
[Log Record Length],
[Description]
FROM fn_dblog (null, null);
--메타 데이터 할당 제거
--잠시 후 실제 익스텐트 할당 삭제
MDF 크기 7748.000000 -> 2801.375000
MDF 크기 5000MB 감소
LDF 크기 42.74 -> 60.96
LDF 18MB 증가 -> 변경된 MDF의 약 0.35%
참고
데이터를 delete하면 LOP_DELETE_ROWS로 남는다
약 20MB 테이블 DELETE
LDF 173MB -> 412MB
DROP
LDF 34 -> 34.6
결론 -> drop 과 truncate 도 로그를 쓰는 작업이며 delete에 비하여 가벼운 작업으로 생각해야한다.
※
MySQL의 경우 Truncate는 DROP AND CREATE TABLE 로 작동하여 롤백이 불가능하다.
아래는 참고한 내용들
이는 모두 하나의 트랜잭션으로 생성되지 않으며(지연 삭제의 전체 요점은 많은 작은 트랜잭션에서 백그라운드에서 작업을 수행하는 것입니다) 즉시 생성되지 않습니다(지연 삭제 백그라운드 작업이 단일 스레드이기 때문에). 데이터베이스에서 진행되는 다른 모든 작업과 혼합되어 다른 트랜잭션과 마찬가지로 동기 AG 복제본으로 전송됩니다. 따라서 추가 로그가 많이 생성되고 있지만 큰 문제가 발생할 것으로 예상하지는 않습니다.
TRUNCATE TABLE 및 DROP TABLE은 모두 메타데이터 전용 작업으로. 특정 개체에 할당되는 범위를 포함하여 시스템 카탈로그를 변경합니다. 이러한 모든 변경 사항이 기록된다. 그러나 테이블의 크기에 관계없이 비용은 매우 적습니다.
각 행에 대한 로그 레코드를 생성하는 유일한 방법은 DELETE입니다.
참조
https://www.sqlskills.com/blogs/paul/the-curious-case-of-log-generated-during-a-drop-table/
https://sqlperformance.com/2013/05/sql-performance/drop-truncate-log-myth
'공부 > DATABASE' 카테고리의 다른 글
[SQL Server, MySQL] 데이터 플러시와 커밋 (0) | 2024.04.06 |
---|---|
[SQL Server] 동일한 컬럼을 가진 인덱스와 통계 (0) | 2024.04.02 |
[SQL SERVER] Always On, 미러링 데이터 동기화 방식 (0) | 2024.03.27 |
[SQL Server] FCI, RSAG 구성 (0) | 2024.02.20 |
[MySQL] OOM으로 인한 서버 다운 현상 확인 (0) | 2024.01.31 |