데이터베이스 시스템에서 트랜잭션은, 하나의 기능을 수행하는 작업단위를 말한다.
예를 들어, 상대방에게 이체하는 기능이라면, 이런 과정을 거치게 된다.
1. 나의 계좌를 확인한다.
2. 계좌에서 잔액을 확인하여 출금한다.
3. 상대방의 계좌에 금액을 입금한다.
이 과정을 하나로 묶어, '이체'라는 하나의 기능을 수행하는 트랜잭션으로 볼 수 있다.
특징으로 원자성, 일관성, 독립성, 지속성이 있다.
트랜잭션과 관련된 일이 모두 수행되었거나 되지 않았거나를 보장한다. 트랜잭션 커밋시 문제가 되면 롤백했을때 모두 수행되지 않는 것을 보장한다.
즉 트랜잭션의 모든 작업이 성공해야만 데이터베이스의 상태가 변경되고, 하나라도 실패할 경우 모든 작업이 롤백된다. 이를 통해 데이터 손실이나 불일치를 방지할 수 있다.
트랜잭션 수행 전과 후에도 DB의 제약이나 규칙을 만족해야함을 의미한다. 즉, 항상 데이터베이스를 일관되게 유지해야함을 의미한다. 트랜잭션 수행 전후에도 데이터는 비즈니스 규칙과 제약조건을 충족해야한다. 이를 통해서 데이터의 신뢰성을 높이고 무결성을 유지할 수 있다.
트랜잭션 수행시 서로에게 영항을 받지 않아야함을 말한다. 트랜잭션은 독립적으로 처리되며 복수의 병렬 트랜잭션은 서로 격리되어 마치 순차적으로 실행되는 것처럼 작동해야 한다. DB는 여러 사용자가 같은 데이터에 접근하되, 성능이 하락하면 안된다. 따라서, 여러 수준의 격리단계를 나누어서 격리성을 보장한다. 이를 통해 동시성 문제를 해결하고, 데이터의 무결성을 보장할 수 있다.
성공적으로 수행된 트랜잭션은 그 결과가 영원히 반영되어야 한다. 즉, 시스템이 다운되거나 오류가 발생했을때도 완료된 트랜잭션의 결과는 보존되어야 한다. 이를 통해 데이터의 안정성을 확보할 수 있다.
이러한 ACID원칙을 준수하는 것은 데이터베이스의 신뢰성과 안정성을 높이는데 중요하다.