트랜잭션(데이터베이스 엔진)
트랜잭션은 하나의 논리적 작업 단위로 수행되는 일련의 작업입니다. 작업의 논리적 단위는 ACID(원자성, 일관성, 격리성 및 영속성) 속성이라고 하는 네 가지 속성을 통해 트랜잭션으로서의 자격을 부여합니다.
원자성
트랜잭션은 더 이상 분류할 수 없는 작업 단위여야 하며 모든 데이터 수정 작업이 수행되거나 하나도 수행되지 말아야 합니다.일관성
완료된 트랜잭션의 모든 데이터는 일관되어야 합니다. 관계형 데이터베이스에서는 트랜잭션 수정에 모든 규칙을 적용하여 모든 데이터 무결성을 유지해야 합니다. 트랜잭션 마지막에는 B-tree 인덱스 또는 이중 연결 목록 등 모든 내부적 데이터 구조를 반드시 수정해야 합니다.격리성
동시 트랜잭션에 의한 수정은 다른 동시 트랜잭션에 의한 수정과 격리되어야 합니다. 트랜잭션에서 다른 동시 트랜잭션이 수정하기 전 상태의 데이터를 보거나 두 번째 트랜잭션이 완료된 후의 데이터를 볼 수는 있지만 중간 상태는 볼 수 없습니다. 결과적으로 시작 데이터를 다시 로드하고 일련의 트랜잭션을 재생하여 원래 트랜잭션이 수행된 후의 상태로 데이터를 되돌릴 수 있는데 이를 순차성이라고 합니다.영속성
트랜잭션이 완료되고 나면 그 영향이 영구적으로 시스템에 적용됩니다. 수정은 시스템에 오류가 발생한 경우에도 지속됩니다.
트랜잭션 지정 및 강제 적용
SQL 프로그래머는 적시에 트랜잭션을 시작하고 끝내 데이터의 논리적 일관성을 유지하는 책임을 맡고 있습니다. 프로그래머는 조직의 업무 규칙과 관련하여 데이터를 일관된 상태로 유지할 수 있도록 데이터 수정 순서를 정의해야 합니다. 그런 다음 이러한 수정 문을 하나의 트랜잭션에 포함하여 SQL Server 데이터베이스 엔진가 트랜잭션의 물리적 무결성을 유지할 수 있게 해야 합니다.
각 트랜잭션의 물리적 무결성을 유지하는 메커니즘을 제공하는 것은 데이터베이스 엔진과 같은 기업 데이터베이스 시스템의 책임입니다. 데이터베이스 엔진은 다음을 제공합니다.
트랜잭션 격리성을 유지하는 잠금 기능
트랜잭션 영속성을 유지하는 로깅 기능. 서버 하드웨어, 운영 체제 또는 데이터베이스 엔진의 인스턴스 자체에 오류가 발생하더라도 인스턴스는 다시 시작할 때 트랜잭션 로그를 사용하여 완료되지 않은 모든 트랜잭션을 자동으로 시스템 오류 시점으로 롤백합니다.
트랜잭션 원자성 및 일관성을 유지하는 트랜잭션 관리 기능. 트랜잭션이 일단 시작된 후에는 성공적으로 완료되어야 합니다. 그렇지 않으면 데이터베이스 엔진이 트랜잭션 시작 이후 만들어진 모든 데이터 수정 내용을 실행 취소합니다.