트랜잭션

초보개발·2021년 10월 28일
0

Database

목록 보기
3/10
post-custom-banner

트랜잭션

한번에 수행되어야 하는 데이터베이스 연산들의 논리적 모임

  • 동시성 제어 : 다수 사용자가 데이터베이스를 동시 접근하도록 허용하면서 데이터베이스의 일관성을 유지한다.
  • 회복 : 데이터베이스를 갱신하는 도중, 시스템이 다운되어도 데이터베이스의 일관성을 유지한다.

ACID

원자성(Atomicity) : 한 트랜잭션 내의 모든 연산들이 완전히 수행되거나 전혀 수행되지 않음을 의미한다.(all or nothing), Commit/Rollback/회복
일관성(Consistency) : 어떤 트랜잭션이 수행되기 전에 데이터베이스가 일관된 상태를 가졌다면 트랜잭션이 수행된 후에 데이터베이스는 또 다른 일관된 상태를 가진다, 무결성 제약 조건
고립성(Isolation) : 한 트랜잭션이 데이터를 갱신하는 동안 이 트랜잭션이 완료되기 전에는 갱신 중인 데이터를 다른 트랜잭션들이 접근하지 못하도록 해야한다, 동시성 제어
지속성(Durability) : 일단 한 트랜잭션이 완료되면 이 트랜잭션이 갱신한 것은 시스템이 고장이나도 손실되지 않는다, 회복 기법

Commit, Rollback

Commit은 모든 작업을 정상적으로 성공했다고 확정한 명령이다. 따라서 데이터베이스에 변경된 내용이 적용된다.
Rollback은 작업 중 문제가 생기면 변경사항을 취소하고 트랜잭션이 수행되기 전으로 돌아간다.
-> 데이터의 무결성이 보장된다.

트랜잭션 Isolation level

트랜잭션에서 일관성 없는 데이터를 허용하는 수준이다.

  • 레벨0(Read Uncommitted) : 트랜잭션에 처리중이거나, 아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용한다.
  • 레벨1(Read Committed) : 커밋이 이루어진 트랜잭션만 조회 가능하다.
  • 레벨2(Repeatable Read) : 트랜잭션이 범위 내에서 조회한 데이터 내용이 항상 동일함을 보장한다. 다른 사용자는 트랜잭션 영역에 해당되는 데이터에 대한 수정이 불가능하다.
  • 레벨3(Serializable) : 다른 사용자는 트랜잭션 영역에 해당되는 데이터에 대한 수정 및 입력이 불가능하다.
post-custom-banner

0개의 댓글