Oracle의 truncate와 delete의 차이점을 비교한 예
Oracle에서 truncate와 delete의 차이점은 다음과 같습니다.
1. 삭제 후 조건을 작성할 수 있지만 자를 수는 없습니다.
2. 레코드에서 삭제는 하나씩 삭제되며, 삭제된 레코드는 각각 로그에 기록되고, truncate는 전체 페이지를 한 번에 삭제하므로 날짜에는 페이지 해제만 기록됩니다. , 업데이트 로그에서 삭제하고 기본적으로 자르지 않으며 트랜잭션 로그 공간을 덜 사용합니다.
3. delete from이 빈 테이블을 삭제한 후에는 빈 페이지가 유지되지만 truncate는 테이블에 어떤 페이지도 남기지 않습니다.
4. 행 잠금을 사용하여 DELETE 문을 실행하면 테이블의 각 행이 삭제되도록 잠깁니다. truncate는 항상 개별 행이 아닌 테이블과 페이지를 잠급니다.
5. ID에 의해 생성된 자동 증가 ID 열이 있는 경우 삭제 후에도 마지막 숫자부터 계속 증가합니다. 즉, 시드는 변경되지 않고 그대로 유지되며 잘린 후에는 시드가 삭제됩니다. 초기값으로 돌아갑니다.
6. 자르기 작업은 개별 행 삭제를 기록하지 않기 때문에 삭제 트리거를 트리거하지 않습니다.
요약:
1. 테이블의 구조(정의)가 아닌 삭제 데이터만 자르고 삭제합니다.
2. 삭제 문은 dml입니다. 이 작업은 롤백 세그먼트에 배치되며 해당 트랜잭션이 제출될 때까지 적용되지 않습니다. 실행 중에 트리거됩니다.
Truncate는 ddl이며 작업이 즉시 적용됩니다. 원본 데이터는 롤백 세그먼트에 배치되지 않으며 작업이 트리거되지 않습니다.
3. 삭제 문은 테이블이 차지하는 범위에 영향을 주지 않으며 상위 워터마크는 원래 위치에 유지됩니다.
truncate 문은 기본적으로 공간을 최소 범위로 해제합니다. 범위, 재사용 저장소를 사용하지 않는 한 잘림은 상위 워터마크를 다시 시작으로 재설정합니다.
4. 일반적으로 속도: truncate gt;
5. 보안: 자르기를 사용할 때는 특히 백업이 없을 때 주의하세요.