데이터베이스 트랜젝션에 대해 설명해보세요.
데이터베이스 트랜젝션(Database Transaction)
데이터베이스 트랜잭션은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다. 여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미한다.
이론적으로 데이터베이스 시스템은 각각의 트랜잭션에 대해 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 영구성(Durability)을 보증한다. 이 성질을 첫 글자를 따 ACID라 부른다. 그러나 실제로는 성능향상을 위해 이런 특성들이 종종 완화되곤 한다. 어떤 시스템들에서는 트랜잭션들은 논리적 작업 단위(LUW, Logical Units of Work)로 불린다.
트랜잭션의 목적
데이터베이스 기능 중, 트랜잭션을 조작하는 기능은 사용자가 데이터베이스 완전성(integrity) 유지를 확신하게 한다. 단일 트랜잭션은 데이터베이스 내에 읽거나 쓰는 여러 개 쿼리를 요구한다 이때 중요한 것은 데이터베이스가 수행된 일부 쿼리가 남지 않는 것이다. 예를 들면, 송금을 할 때 한 계좌에서 인출되면 다른 계좌에서 입금이 확인되는 것이 중요하다. 또한 트랜잭션은 서로 간섭하지 않아야 한다.
간단한 트랜잭션은 아래 양식의 SQL 랭귀지로 데이터베이스 내에서 실행된다.
▪ Begin the transaction ▪ Execute several queries (DB내 갱신이 아직 적용되지 않는다) ▪ Commit the transaction (트랜잭션이 성공적이며, 갱신이 실제 적용됨) |
만약 쿼리 하나가 실패하면, 데이터베이스 시스템은 전체 트랜잭션 또는 실패한 쿼리를 롤백한다. 이것은 DBMS가 어떻게 사용되고 셋업 되었느냐에 따라 다르다. 트랜잭션은 커밋전에 언제든지 수동으로 롤백될 수 있다.
트랜젝션의 성질
1) 원자성(Atomicity)
▪ 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 함.
▪ 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 함.
2) 일관성(Consistency)
▪ 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함
▪ 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 함
3) 독립성(Isolation)
▪ 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어는 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음
▪ 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없음
4) 명속성, 지속성(Durability)
▪ 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 함
커뮤니티 Q&A
위 이론과 관련된 게시글이에요.
이해가 안 되거나 궁금한 점이 있다면 커뮤니티에 질문해 보세요!
게시글 작성하기