140 likes | 538 Views
제 10 장 동시성 제어. 1. 개요. 2. 동시성 제어의 필요성. 3. 트랜잭션 스케줄. 4. 동시성 제어 기법. 동시성 제어의 필요성 갱신 내용 손실 (Lost Update) 모순성 (Inconsistency) 연쇄 복귀 (Cascading Rollback). 트랜잭션 원자성 (Atomicity : All or Nothing) 일관성 (Consistency) 고립성 (Isolation) 지속성 (Durability). ACID. 트랜잭션 스케줄
E N D
제 10 장 동시성 제어 1. 개요 2. 동시성 제어의 필요성 3. 트랜잭션 스케줄 4. 동시성 제어 기법
동시성 제어의 • 필요성 • 갱신 내용 손실(Lost Update) • 모순성(Inconsistency) • 연쇄 복귀(Cascading Rollback) • 트랜잭션 • 원자성(Atomicity : All or Nothing) • 일관성(Consistency) • 고립성(Isolation) • 지속성(Durability) ACID • 트랜잭션 스케줄 • 트랜잭션 스케줄(Transaction Schedule) • 직렬성(Serializability) • 동시성 제어 기법 • 로킹(Locking) 기법 • 2단계 로킹 규약 (2PLP : Two Phase Locking Protocol) • 시간 스탬프 순서 기법 (Time Stamp Ordering) 1. 개 요 • 데이터베이스 동시성 제어 이슈
시간 Read (잔액) 잔액 = 잔액 + 100 Write (잔액) T1 Read (잔액) 잔액 = 잔액 - 200 Write (잔액) T2 잔액 잔액 잔액 600 500 300 잘못된 결과 정확한 결과는 400 2. 동시성 제어의 필요성 –2.1 갱신 내용 손실 • 필요성 • - 동일한 정보를 판독하고 갱신하는 연산을 포함한 트랜잭션일 경우 동시성 제어를 하지 않는다면 예기치 못한 문제점이 발생할 수 있다. • 갱신 내용 손실 (lost update) 사례
시간 Read (예약인원) 예약인원 = 예약인원 + 10 Write (예약인원) Read (입금액) 입금액 = 입금액 + 20 Write (입금액) T1 Read (예약인원) 예약인원 = 예약인원 + 20 Write (예약인원) Read (입금액) 입금액 = 입금액 + 40 Write (입금액) T2 예약 인원 예약 인원 예약 인원 10 20 20 입금액 입금액 입금액 100 100 160 예약 인원 예약 인원 40 20 입금액 입금액 100 140 2. 동시성 제어의 필요성 –2.2 모순성
장애 발생 시간 Read (예약인원) 예약인원 = 예약인원 + 100 Write (예약인원) Read (입금액) Rollback T1 T1 Read (예약인원) 예약인원 = 예약인원 + 200 Write (예약인원) T2 예약 인원 예약 인원 예약 인원 예약 인원 400 400 200 100 원래 값(100)과 다른 값(300)으로 복귀 입금액 입금액 입금액 입금액 100 100 100 100 Rollback T1 예약 인원 예약 인원 400 300 입금액 입금액 100 100 2. 동시성 제어의 필요성 –2.3 연쇄적인 복귀
3. 트랜잭션 스케줄 • 트랜잭션 스케줄(Transaction schedule) • - 데이터베이스 트랜잭션을 구성하는 연산들을 실행하는 순서 • 필요성 • - 다중 데이터베이스 사용자 환경을 지원하는 시스템이 멀티프로그래밍을 지원하기 때문 • - 기존 컴퓨터 시스템의 트랜잭션 처리 인터리빙(interleaving) 방식 • 트랜잭션의 직렬성(serializability) • - 트랜잭션에 포함되는 연산들까지 고려하여 동시성 제어가 가능하도록 스케줄을 작성
4. 동시성 제어 기법 • 로킹 (locking) 기법 • - 트랜잭션들이 사용하는 자원(데이터 항목)에 대하여 상호 배제 기능을 제공하는 것 • - 특정 트랜잭션이 데이터 항목에 대해 잠금(lock)을 설정하면 잠금을 설정한 트랜잭션은 잠금을 해제(unlock)할 때까지 데이터 항목을 독점적으로 사용할 수 있다. • 시간 스탬프 순서(timestamp ordering) 기법 • - 시스템에서 생성하는 고유 번호인 시간 스탬프를 트랜잭션에 부여하는 것
4. 동시성 제어 기법 –4.1 로킹 기법 • 로킹 (locking) • 트랜잭션들이 사용하는 자원(데이터 항목)에 대하여 상호 배제 기능을 제공하는 것 • 특정 트랜잭션이 데이터 항목에 대해 잠금(lock)을 설정하면 잠금을 설정한 트랜잭션은 잠금을 해제(unlock)할 때까지 데이터 항목을 독점적으로 사용할 수 있다.
4.1 로킹 기법 –1. 로킹 프로토콜의 기본 개념 • (1) 트랜잭션 T가 특정 데이터 항목(x)에 대하여 판독이나 기록 연산을 수행하기 위해서는 반드시 lock(x) 연산을 먼저 실행함 • (2) 트랜잭션 T가 실행한 lock(x) 연산에 대하여 트랜잭션 T의 실행 종료 이전에 unlock(x) 연산을 실행하여 잠금을 해제함 • (3) 트랜잭션 T가 데이터 항목 x에 대하여 잠금 연산(lock(x) )을 실행하려할 때, x가 이미 다른 트랜잭션에 의하여 잠금이 설정되어 있을 경우 트랜잭션 T는 lock(x) 을 설정할 수 없다. • (4) 트랜잭션 T 는 (3) 번의 경우와 같이 이미 다른 트랜잭션이 데이터 항목 x에 대하여 잠금 연산을 실행한 경우, x의 잠금을 해제하는unlock(x) 을 실행할 수 없다.
4.1 로킹 기법 –2. 로킹 연산의 종류 • 공유 잠금(Shared – lock) • - 트랜잭션 T1이 데이터 항목 x에 대하여 Shared – lock 을 설정할 경우, 트랜잭션 T1은 공유 잠금을 설정한 데이터 항목에 대하여 판독 연산은 실행 할 수 있으나 기록 연산은 실행할 수 없다. • 전용 잠금(Exclusive – lock) • - 트랜잭션 T 가 데이터 항목 x에 대하여 Exclusive – lock을 설정할 경우, 트랜잭션 T는 전용 잠금을 설정한 데이터 항목에 대하여 판독 연산은 물론 기록 연산도 실행할 수 있다.
데이터베이스 릴레이션(파일) 투플(레코드) 속성(필드) 로킹 단위 (Locking Granularity) 구현 복잡 강력한 동시성 구현 용이 약한 동시성 4.1 로킹 기법 –3. 로킹 단위 • 로킹 단위(locking granularity) • - 로킹 기법에서 사용하는 잠금(lock) 연산의 대상 • 로킹 단위의 크기에 따라 trade – off 가 존재 하기 때문에 적정한 로킹 단위를 결정해야 한다.
4.1 로킹 기법 –4. 2단계 로킹 프로토콜 • 2단계 로킹 프로토콜(2PLP : Two Phase Locking Protocol) • - 로킹 기법을 이용하여 동시성 제어를 제공하는 기법 중 가장 널리 이용됨 • 단계 • 확장 단계 (Growing phase) • - 트랜잭션들은 잠금(lock) 연산만을 수행할 수 있고 해제(unlock) 연산은 수행할 수 없다. • 축소 단계(Shrinking phase) • - 트랜잭션들은 해제(unlock) 연산만을 수행할 수 있고 잠금(lock) 연산은 수행할 수 없다.
4.2 시간 스탬프 순서 기법 • 시간 스탬프 순서(timestamp ordering) 기법 • 시스템에서 생성하는 고유 번호인 시간 스탬프를 트랜잭션에 부여하는 것 • 데이터베이스 응용을 시작하기 위하여 시스템에 들어오는 트랜잭션의 순서대로 시간 스탬프를 지정하여 동시성 제어의 기준으로 사용