오라클 성능 고도화 원리와 해법 I (2012년)
트랜잭션 동시성 제어 0 0 99,999+

by 구루비스터디 Concurrency ACID 트랜잭션 [2018.03.20]


트랜잭션 동시성 제어

동시성 제어란( Concurrency Control )?

  • 동시에 실행되는 트랜잭션 수를 최대화하면서도 입력, 수정, 삭제, 검색 시 데이터의 무결성이 유지될 수 있도록 노력하는 것을 말한다.
  • 여러 개 트랜잭션이 동시에 수행될 대, 데이터베이스 애플리케이션은 이들 트랜잭션이 서로 간섭을 일으키는 현상을 최소화하면서 데이터의 일관성과 무결성이 보장되도록 개발되어야 하는 것이다.


그림 2-1 p. 103


  • 동시성( Concurrency ) : 다중 사용자가 같은 데이터를 동시에 액세스
  • 일관성( Consistency ) : 자신이 발생시킨 변경 사항고 다른 트랜잭션의 변경 사항( 읽을 수 있는 버전만 허용 )을 포함햄 일관성 있는 상태로 데이터를 제공


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

  • 동시성과 일관성이 트레이드 오프( Trade-off ) 관계에 있다는데 있다.
  • 동시성을 높이려고 Lock의 사용을 최소화하면 읽기 일관성을 유지하기 어렵고, 데이터의 일관성을 높이려고 Lock을 많이 사용하면 동시성이 떨어지게 된다.
  • 따라서 동시성과 일관성이라는 두 마리 토기를 한거번에 잡으려면 매우 세심한 주의가 필요하다.


트랜잭션이란?

  • 여러 개의 수정작업이 하나의 작업처럼 전부 처리되거나 아예 전부 처리가 안 되도록( All or Nothing )하는 것인데, 이런한 일의 최소 단위를 트랜잭셔이라고 한다.
  • 예를 들어, 은행 업무의 "계좌이체" 트랜잭션은 하나의 예금 계좌에서 인출하여 다른 예금 계조에 입금하는데, 이 두 작업은 한나의 단위로 함께 수행되어야 한다.


트랜잭션의 특징( ACID )

  • 데이터베이스 갱신과 관련하여 트랜잭션은 4가지 중요한 특징을 갖는다.


원자성( Atomicity )
  • 앞서 트랜잭션의 정의 부분에서 이미 설명한 바와 같고 더 이상 분해가 불가능한 업무의 최소단위를 말한다.


일관성( Consistency )
  • 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.
  • 즉 트랜잭션 실행의 결과로 데이터베이스 상태가 모순되지 않는다.


격리성( lsolation )
  • 트랜잭션이 실행 중에 생성하는 연산의 중간 결고는 다른 트랜잭션이 접근 할 수 없다.


영속성( Durability )
  • 트랜잭션이 일단 그 실행을 성공적으로 완료하면 그 결과는 데이터베이스에 영속적으로 저장된다.
코어 오라클 데이터베이스 스터디 모임 에서 2012년에 오라클 성능 고도화 원리와 해법 I 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3077

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입