트랜잭션 동시성 제어

  • 동시에 실행되는 트랜잭션 수를 최대화 하면서도 입력, 수정, 삭제, 검색시 데이터의 무결성이 유지될수 수 있도록 노력하는 것을 말한다.
  • 여러개의 트랜잭션이 동시에 수행될 때, 테이터베이스 애플리케이션은 이들 트랜색션이 서로 간섭을 일으키는 현상을 최소화 하면서 데이터의 일관성과 무결성이 보장되도록 개발되어야 한다.
  • 동시성 : 다중 사용자가 같은 테이터를 동시에 액세스
  • 일관성 : 자시이 발생시킨 변경사항과 다른 트랜잭셔의 변경 사항( 읽을 수 있는 버전만 허용)을 포함해 일관성 있는 상태로 데이터를 제공
    그림2-1참조

동시성 제어가 어려운 이유?

  • 동시성과 일관성이 트레이드 오프(Trade-off)관계에 있다.
  • 동시성을 높이려면 Lock의 사용을 최소화하면 읽기 일관서을 유지하기 어렵고, 데이터의 일관성을 높이려고 Lock을 많이 사용하면 동시성이 떨어지게된다.

트랜잭션이란?

  • 여러 개의 수정작업이 하나의 작업처럼 전부 처리되거나 아예 전부 처리가 안 되도록(ALL or Nothing)하는 것인데, 이러한 일의 최소 단위가 트랜잭션이다.

트랜잭션의 특징(ACID)

  • 원자성(Atomicity) : 트랜잭션의 더이상 분해가 불가능한 업무의 최소단위
  • 일관성(Consistency) : 트랜잭션 실행의 결과로 데이터베이스 상태가 모순되지 않도록 하는것
  • 격리성(Isolation) : 트랜잭션이 실행 중에 생성한는 연산의 중간 결과는 다른 트랜잭션이 접근할 수 없다.
  • 영속성(Durability) : 트랜잭션이 일단 그 실행을 성공적으로 완료하면 그 결과는 데이터베이스에서 영속적으로 저장된다.