DB 무결성 확보를 위한, 동시성 제어(Concurrency control)

    데이터베이스 무결성 확보를 위한, 동시성 제어 개요

     

    개념

    - 다중 사용자 환경을 지원하는 DB(데이터베이스) 시스템에서 여러 트랜잭션들이 동시에 성공적으로 실행될 수 있도록 지원하는 기능

    - 동시성 제어는 병행성 제어와 같은 말

     

    여러명이 동시에 접근하는 데이터베이스의 경우, 데이터를 삽입,갱신,삭제할 경우 다른 사용자에게 영향을 줄 수 있다. 이를 위해 데이터베이스는 트랜잭션을 관리하며 최소의 응답시간, 최대의 공유, 무결성, 일관성 등을 위해서 동시성 제어(concurrency control)는 필연적으로 구현되어 있어야 한다.

     

    주요 목표

    - 직렬화 : 동시 수행 트랜잭션 처리량을 최대화하면서, 직렬성 보장

    - 성능 : 공유도 최대, 응답 시간 최소, 시스템 활동의 최대 보장

     

    동시성 제어를 하지 않을 경우 문제점

    갱신내용 손실(Lost Update)

    - 두 개의 서로 다른 트랜잭션이 데이터베이스 내의 동일한 행에 있는 동일한 열을 동시에 업데이트하려고 할 때 발생

     

    그림설명

    1. 일반적으로 한 트랜잭션은 특정 행, 특정 열을 업데이트하는 반면, 얼마 후에 시작된 다른 트랜잭션은 동일한 값 자체를 업데이트하기 전에 이 업데이트를 인지하지 못함
    2. 첫 번째 트랜잭션의 결과가 두 번째 트랜잭션에 의해 덮어 쓰기되므로 lost 발생

     

    현황 파악 오류(Dirty Read)

    - 트랜잭션을 다른 트랜잭션이 실행하여 변형, 아직 커밋되지 한 행의 데이터를 판독하도록 허용되는 때에 발생

     

    그림설명

    1. 위 예에는 트랜잭션2는 행을 변경하지만 변경 사항을 커밋하지는 않음.
    2. 트랜잭션1은 커밋되지 않은 데이터(age=21)를 읽음.
    3. 트랜잭션 2가 변경 사항을 롤백하거나 (이미 트랜잭션 1에서 읽음) 데이터베이스에 대한 다른 변경 사항을 업데이트하면 트랜잭션 1의 레코드에서 데이터보기가 잘못 될 수 있음(롤백하여 20이 되었지만, 21로 인지)

     

     

    연쇄 복귀(Cascading Rollback), 회복 불능(Unrecoverability)

    - 복수의 트랜잭션이 Data를 공유할 경우 특정 트랜잭션이 취소를 할 경우, 다른 트랜잭션이 처리한 부분들로 인해서 취소가 불가능한 상태

     

    그림설명

    1. 트랜잭션 1번부터 4번까지 순서대로 A의 값을 읽고 쓴 상태
    2. 트랜잭션 1에서 취소를 시도
    3. 트랜잭션 2~4번에서 읽기와 쓰기를 하여 이미 값을 처리하였기 때문에 트랜잭션 취소 불가능

     

    동시성 제어 기법들

     

    잠금(Locking, Two-phase locking - 2PL)

    - Lock 연산을 2단계로 구분하여 진행

    - 확장 단계 : 트랜잭션  lock권한 획득
    - 차단 단계 : 데이터 연산(SQL) 수행
    - 수축 단계 : 트랜잭션 lock권한 반납

     

     

     

    타임 스탬프 순서(Timestamp ordering)

    - 트랜잭션 순서 규칙은 도착시간별 식별자 부여

    - 타임스탬프 할당 방식은 시스템 계수기, 논리적 계수기 방식으로 분류

    - 시스템 계수기 : 시스템 시간을 이용

    - 논리적 계수기 : DBMS 논리적인 계수값 이용

     

    검증(Validation)

    - 트랜잭션 처리시 메모리상의 복사본에 대한 연산을 수행하고 검증 완료 시 DBMS에 반영

    - 읽기 단계 : 메모리상의 데이터 연산 수행
    - 검증 단계 : 직렬성 확인 단계
    - 쓰기 단계 : 성공시 DBMS에 반영(Commit), 실패 시 철회(Rollback)

     

    다중 버전(Multi-Version)

    - 하나의 데이터 아이템에 여러 버전(복사본) 유지

    - 성공한 트랜잭션의 최종 버전을 DBMS에 반영

    - Multi-version 2PL : 다중 버전 타임스탬프 기법의 연쇄 복구 단점 해결

     

    참고자료

    https://dzone.com/articles/what-is-a-lost-update-in-database-systems
    https://en.wikipedia.org/wiki/Isolation_(database_systems)
    https://en.wikipedia.org/wiki/Concurrency_control

     

    댓글

    Designed by JB FACTORY