>데이터 베이스 >SQL >SQL Delete 행과 잘림의 차이점은 무엇입니까?

SQL Delete 행과 잘림의 차이점은 무엇입니까?

Robert Michael Kim
Robert Michael Kim원래의
2025-03-04 17:49:44965검색
SQL 행 삭제 행 및 자르기 테이블 : 차이점은 무엇입니까?

DELETE의 핵심 차이는 테이블에서 데이터를 제거하는 접근 방식에 있습니다. 는 지정된 TRUNCATE 절을 기반으로 DELETE one으로 를 하나씩 제거하는 데이터 조작 언어 (dml) 문입니다 (또는 조항이 제공되는 경우 모든 행). 즉, 각 행을 개별적으로 처리하여 각 삭제를 기록합니다. 반면에 는 라면에서 한 번에 WHERE를 제거하는 데이터 정의 언어 (DDL) 문입니다. 개별 행 삭제를 기록하지 않는 빠르고 벌크 작업입니다. 를 외과 적으로 특정 행을 제거하는 것으로 생각하는 반면 WHERE는 단일 스 와이프로 테이블을 깨끗하게 닦는 것과 같습니다. 결정적으로, TRUNCATE는 조건부 제거를 허용하는 반면, 는 항상 모든 행을 제거합니다. 삭제 대 Truncate를 사용하는 성능의 영향은 무엇입니까? 특히 큰 테이블에서 속도 측면에서 DELETE>가 상당히 우수합니다. TRUNCATE는 각 삭제를 개별적으로 로그인 할 필요가 없기 때문입니다. 성능 게인은 특히 테이블에서 많은 행이나 모든 행을 제거 해야하는 시나리오에서 특히 두드러집니다. 로깅 오버 헤드와 결합 된 의 행 별 처리는 상당한 성능 병목 현상을 초래할 수 있습니다. 또한, 운영에 대한 트랜잭션 로그는 의 트랜잭션 로그보다 훨씬 크며 트랜잭션 커밋 시간과 잠재적으로 디스크 공간 소비에 영향을 미칩니다. 수백만 행을 삭제하는 시나리오를 고려하십시오. DELETE>의 일부가 취해질 것입니다. TRUNCATE 롤백과 트랜잭션은 삭제 및 자르기 진술과 어떻게 다르게 행동합니까? 진술은 트랜잭션 내에서 작동합니다. 즉, 트랜잭션 내에서 A 작업이 수행되고 트랜잭션이 롤백되면 () 삭제 된 행은 원래 상태로 복원됩니다. 트랜잭션 로그는 개별 삭제를 추적하여 반전을 허용합니다. 반대로,

진술은 일반적으로

트랜잭션의 일부가 아닙니다 (데이터베이스 시스템은이를 허용하는 확장을 제공 할 수 있지만). A 작동은 일반적으로 즉시 커밋되며 a TRUNCATE 후에는 삭제 된 데이터를 복원하지 않습니다. 작업이 완료되면 데이터는 돌이킬 수 없게 제거됩니다. DELETE는 DML 작업과 동일한 수준의 과립성에서 개별 행 제거의 상세한 로그를 유지하지 않는 DDL 작업이기 때문입니다. 삭제 및 자르기를 사용한 후 데이터를 복구 할 수 있습니까? 그렇다면 어떻게

작업 후에 데이터 복구가 종종 가능한 경우, 특히 아직 아직 커밋되지 않은 트랜잭션 내에서 작동이 발생한 경우 종종 가능합니다. 트랜잭션이 여전히 활성화되면 a

는 삭제 된 행을 복원합니다. 트랜잭션이 커밋 된 경우에도 데이터베이스 백업 (전체, 증분 또는 차이)을 사용하여 데이터를 복구 할 수 있습니다. 트랜잭션 로그는 데이터베이스 시스템 및 로깅 전략에 따라 개별 행을 복구하는 데 잠재적으로 사용될 수 있습니다.

a DELETE 운영 후 데이터 복구는 훨씬 더 어려워집니다. ROLLBACK는 DDL 문이므로 일반적으로 개별 행에 대한 상세한 트랜잭션 로그 항목을 생성하지 않습니다. 따라서 a

는 데이터를 복구하지 않습니다.

후 복구를위한 가장 좋은 방법은 데이터베이스 백업에 의존하는 것입니다. 최근 백업이있는 경우 해당 백업에서 테이블을 복원 할 수 있습니다. 트랜잭션 로그에서만 복구하는 것은 일반적으로 TRUNCATE 이후에 실현 가능하지 않습니다. 성공적인 회복 가능성은 백업의 성과 빈도에 직접 비례합니다.

위 내용은 SQL Delete 행과 잘림의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.