ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 직렬화가능성(serializability)을 보장하기 위한 동시성 제어의 개요
    DATABASE 2018. 8. 25. 11:23
    반응형

    핵심키워드 : 동시성 제어LDIC갱신내용손실현황파악오류모순성연쇄복귀불가

    동시성 제어(Concurrency Control)의 정의

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

    동시성 제어의 목적

    • 트랜젝션의 직렬성 보장
    • 데이터의 무결성 과 일관성 보장

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

    • 갱신내용손실(Lost Update)
    • 현황파악오류(Dirty Read)
    • 모순성(Inconsistency)
    • 연쇄복귀불가(Cascading Rollback)

    갱신내용손실(Lost Update)

    • 이전 트랜젝션이 데이터를 갱신한 후 트랜젝션을 종료하기 전 다른 트랜젝션에서 데이터를 갱신하는 경우에 발생
    Transaction1DATATransaction2Begin TransactionBegin Transactionread(A)1000A = A - 500read(A)1000A = A - 400write(A)500write(A)600동시성 제어가 되었다면 A 는 100 이 되어야 함.Transaction1DATATransaction2

    현황파악오류(Dirty Read)

    • 트랜젝션의 중간 수행결과를 다른 트랜젝션이 참조해서 발생하는 오류
    Transaction1DATATransaction2Begin TransactionBegin Transactionread(A)A = 1000A = A * 1.02write(A)A = 1020read(A)A = 1020read(B)B = 2000read(C)C = 1000read(B)B = 2000B = B * 1.02write(B)B = 2040read(C)C = 1000C = C * 1.02write(C)C = 1020sum(A, B, C)sum = 4020sum(A, B, C)sum = 4080Transaction1DATATransaction2

    모순성(Inconsistency)

    • 두 트랜젝션이 동시에 실행될때 데이터가 일관성없는 모순된 상태로 남는 문제
    Transaction1DATATransaction2Begin TransactionBegin Transactionread(A)A = A + 100write(A)read(A)A = A * 2write(A)read(B)B = B * 2write(B)Transaction1 의 연산이 일부만 실행된 상태에서 Transaction2 의 연산이 모두 실행되고 종료됨.계산의 순서가 바뀌어 모순된 상태로 Transaction1 의 연산이 진행됨.read(B)B = B + 100write(B)Transaction1DATATransaction2

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

    • 트랜젝션들이 동시에 같은 데이터를 갱신하는 도중에 한 트랜젝션은 완료되고, 한 트랜젝션은 갱신을 취소하고 원래 상태로 복귀하는 과정에 완료된 트랜젝션에 대해 취소 불가가 발생하는 문제
    Transaction1DATATransaction2Begin TransactionBegin Transactionread(A)A = A + 100write(A)read(A)A = A * 2write(A)Commit TransactionRollback TransactionTransaction1 의 연산을 Rollback 하려고 하나, Transaction2 는 성공완료되어 취소가 불가함Transaction1DATATransaction2


    반응형

    댓글

Designed by Tistory.