트랜잭션(Transaction)
데이터베이스에서 논리적 기능을 수행하기 위한 작업의 단위를 말한다.
트랜잭션은 작업의 완전성과 데이터의 정합성을 보장해 준다.
논리적인 작업 셋을 완벽하게 처리하거나, 오류 시 작업의 일부만 적용되는 현상을 막아준다.
트랜잭션의 속성(ACID)
원자성(Atomicity): 트랜잭션 내에서 실행된 작업들은 모두 성공하거나, 실패 해야 한다.
일관성(Consistency): 트랜잭션이 수행되기 전과 후에 데이터베이스가 일관된 상태를 유지해야 한다.
격리성(Isolation): 각각의 트랜잭션은 독립적이라 서로에게 영향을 주지 않아야 한다.
지속성(Durability): 트랜잭션이 성공적으로 완료된다면 영구적으로 결과에 반영되어야 한다.
트랜잭션 주의사항
트랜잭션은 꼭 필요한 최소의 코드에만 적용하는 것이 좋다.(트랜잭션의 범위를 최소화하라)
구현해야 하는 업무에 따라 트랜잭션을 묶거나 트랜잭션에서 제외하고, 네트워크 작업이 있는 경우 반드시 트랜잭션에서 배제해야 한다.
왜 네트워크 작업이 있을 때 트랜잭션에서 배제해야 할까? 🤔
데이터의 일관성과 안전성을 보장하기 위해 배제해야 한다.
네트워크 작업을 트랜잭션 내부에 포함한다면 다음과 같은 문제가 발생할 수 있다.
- 네트워크 작업이 중간에 실패할 가능성(안전성 X)
- 통신으로 인해 데이터가 변경될 수 있는 부분(일관성 X)