데이터베이스 9-2 동시성 제어

milkbottle·2022년 12월 6일
0

DB

목록 보기
11/13

동시성 제어

  • 다수 사용자들이 데이터베이스에 접근을 하면 갱신 이상이 발생할 수 있음
  • 트랜잭션들 간의 간섭이 생기지 않도록 처리하는 기법

스케줄

  • 직렬 스케줄
    여러 트랜잭션들의 집합을 한 번에 한 트랜잭션씩 차례대로 수행

  • 비직렬 스케줄
    여러 트랜잭션들을 동시에 수행

  • 직력가능 스케줄
    비직렬 스케줄의 결과가 직렬 스케줄의 수행 결과와 동등함

데이터베이스 연산

  • Input(X)
    데이터베이스에서 주기억장치의 버퍼로 읽어들임

  • Output(X)
    주기억장치의 버퍼의 데이터를 데이터베이스(디스크)로 기록함

  • Read(X)
    주기억장치의 버퍼에서 응용프로그램 변수로 복사함

  • Write(X)
    응용프로그램 변수의 데이터를 주기억장치의 버퍼로 기록함

문제

  • 갱신 손실
    수행 중인 트랜잭션이 갱신한 내용을 다른 트랜잭션이 덮어 써서 무효가 됨

  • 오손 데이터 읽기
    완료되지 않은 트랜잭션이 갱신한 데이터를 읽음

  • 반복할 수 없는 읽기
    한 트랜잭션이 동일한 데이터를 두 번 읽을 때 서로 다른 값을 읽음

로킹

운영체제의 Synchronization Issue Tools처럼 데이터베이스에서도 로킹이 존재

  • DB의 데이터들은 공유자원이므로 접근할 때 로크하고 끝나면 언로크
  • 갱신 목적 접근: 독점 로크(X-Lock) 하나의 사용자만 사용 가능
  • 읽기 목적 접근: 공유 로크(S-Lock) 다수의 사용자도 사용 가능

2단계 로킹 프로토콜

  • 1단계: 로킹 확장 단계
    여러 데이터를 로크할 때 계속 로크만 해야함

  • 2단계: 로킹 수축 단계
    여러 데이터를 언로크할 때 계속 언로크만 해야함

  • 로크포인트
    모든 로크할 수 있는 데이터들을 로크한 시점

데드록


서로의 로크가 서로를 기다려 풀 수 없는 로크상태

다중 로크 단위

  • 로크할 수 있는 단위
    • 데이터베이스
    • 릴레이션
    • 디스크 블록
    • 투플
  • 로크하는 범위가 클 수록 로킹에 따른 오버헤드가 감소, 동시성 감소

팬텀 문제

  • 시간 1, 2의 트랜잭션 T1의 결과는 다르게 나타나는 문제
  • 알 수 없는 유령(팬텀)의 데이터가 추가되거나 삭제된 것이 원인
  • 해결법: 인덱스 수준으로 로킹

0개의 댓글

관련 채용 정보