데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 의미합니다. 데이터베이스에 접근하는 방법은 쿼리이기 때문에, 여러 개의 쿼리를 하나로 묶는 단어를 말합니다.
원자성
트랜잭션과 관련된 일이 모두 수행되었거나, 아니면 모두 수행되지 않았거나를 보장하는 성질입니다. 트랜잭션 내에 어느 명령 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 합니다.
commit
쿼리가 성공적으로 처리되었다고 확정하는 명령어로, 트랜잭션 단위로 수행되며, 변경된 내용이 모두 영구적으로 저장되는 것을 말합니다.
Rollback
에러나 어떠한 이슈 때문에 트랜잭션 전으로 돌려야할 때 사용하는 것으로, 트랜잭션으로 처리한 하나의 묶음 과정을 일어나기 전으로 돌리는 일을 말합니다.
롤백시, 해당 트랜잭션을 재시작하거나 폐기합니다.
트랜잭션 전파
트랜잭션을 수행할 때, 커넥션 단위로 수행하기 때문에 커넥션 객체를 넘겨서 수행해야 합니다. 그렇지만 매 번 넘기는 것이 번거롭고 어렵기 때문에, 트랜잭션 관련 메서드의 호출을 하나의 트랜잭션에 묶이도록 하는 것을 트랜잭션 전파라고 합니다.
예시) Spring 프레임워크에서는 @Transactional 애너테이션을 이용하여 여러 쿼리와 관련 코드들을 하나의 트랜잭션으로 처리합니다.
격리성
둘 이상의 트랜잭션이 동시에 병행 실행되는 경우, 어느 하나의 트랜잭션 실행 중에는 다른 트랜잭션의 연산이 끼어들 수 없음을 말합니다. 복수의 병렬 트랜잭션 연산은 서로 격리되어서 마치 순차적으로 실행되는 것처럼 작동되어야 합니다.
또한, 수행죽인 트랜잭션은 완전히 완료될 때까지, 다른 트랜잭션에서는 수행 결과를 참조할 수 없습니다.
순차적으로만 진행하면, 쉽지 않기 때문에 여러 개의 격리 수준으로 나누어 격리성을 보장합니다.
일관성
허용된 방식으로만 데이터를 변경해야하는 것을 의미합니다. 트랜잭션이 실행을 성공적으로 완료하면, 언제나 일관성있는 데이터베이스로 변환됩니다. 또한, 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 합니다.
지속성
성공적으로 완료된 트랜잭션은 영원히 반영되어야 하는 것을 의미합니다. 이는 데이터베이스에 시스템 장애가 발생해도 원래 상태로 복구하는 회복기능이 있어야함을 의미하고, 이를 위해서 체크섬, 저널링, 롤백 등의 기능을 제공합니다.
체크섬
중복 검사의 한 형태로, 오류 정정을 통해 송신된 자료의 무결성을 보호하는 단순한 방법
저널링
파일 시스템 또는 데이터베이스 시스템에 변경 사향을 반영하기 전에 로깅하는 것, 트랜잭션 등 변경 사항에 대한 로그를 남기는 것
활동 : 트랜잭션이 실행중인 상태
실패 : 트랜잭션 실행에 오류가 발생하여 중단된 상태
철회 : 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태
부분완료 : 트랜잭션의 마지막 연산까지 실행했지만, Commit 연산이 실행되지 직전의 상태
완료 : 트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태