ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 동시성 제어
    데이터베이스/트랜젝션, 동시성 제어, 회복 2018. 1. 29. 22:30

    동시성 제어 : 트랜잭션이 동시에 수행될 , 일관성을 해치지 않도록 트랜잭션의 데이터 접근을 제어하는 DBMS 기능

     

    갱신손실 문제

    개의 트랜잭션이 개의 데이터를 동시에 갱신할 발생 (데이터베이스에서 절대 발생해서는 안됨)

     

     

    자신이 데이터를 수정 중이라는 사실을 알리는 방법

     

    락의 개념

    락은 트랜잭션이 데이터를 읽거나 수정할 표시하는 잠금장치이다.

    자신이 데이터를 락으로 잠그면 다른 트랜잭션은 잠금이 풀릴 때까지 기다려야 한다.

    락을 사용하면 데이터에 대한 갱신을 순차적으로 진행할 있기 때문에 갱신손실 문제를 해결할 있다.

     

    락의 유형

    락은 트랜잭션이 읽기를 사용하는 공유락, 읽고 쓰기를 사용하는 배타락으로 나뉜다.

    트랜잭션이 공유락과 배타락을 사용하는 규칙

    데이터에 락이 걸려있지 않으면 트랜잭션은 데이터에 락을 걸 수 있음

    트랜잭션이 데이터 X를 읽기만 할 경우 LS(X)를 요청하고, 읽거나 쓰기를 할 경우 LX(X)를 요청

    다른 트랜잭션이 데이터에 LS(X)을 걸어둔 경우, LS(X)의 요청은 허용하고 LX(X)는 허용하지 않음

    다른 트랜잭션이 데이터에 LX(X)을 걸어둔 경우, LS(X)와 LX(X) 모두 허용하지 않음

    트랜잭션이 락을 허용받지 못하면 대기 상태가 됨

     

     

    2단계 락킹

    락을 걸고 해제하는 시점에 제한을 두지 않을 경우 개의 트랜잭션이 동시에 실행될 데이터의 일관성이 깨질 있다.

    확장단계 : 트랜잭션이 필요한 락을 획득하는 단계로, 단계에서는 이미 획득한 락을 해제하지 않는다.

    수축단계 : 트랜잭션이 락을 해제하는 단계로, 단계에서는 새로운 락을 획득하지 않는다.

     

     

    데드락 (교착상태)

    이상의 트랜잭션이 각각 자신의 데이터에 대하여 락을 획득하고 상대방의 데이터에 대해 락을 요청하면 무한 대기에 빠지는 현상

     

     

     


    '데이터베이스 > 트랜젝션, 동시성 제어, 회복' 카테고리의 다른 글

    트랜잭션  (0) 2018.01.29

    댓글