1. 동시성 제어를 위한 Locking 기법
가. Locking 기법의 정의
- 트랜잭션이 사용하는 자원 (데이터 항목) 에 대하여 상호 배제 (Mutual Exclusive) 기능을 제공하는 기법
- 상호 배제는 특정 트랜잭션이 데이터 항목에 대하여 잠금 (Lock) 을 설정하면, 잠금을 설정한 트랜잭션이 해제 (Unlock) 할 때까지 데이터를 독점적으로 사용할 수 있는 것
나. Locking 연산의 종류(일반적인 DBMS 모두 지원, Select/Update, Insert 등)
- 공유 Lock (Shared Lock) : 공유 잠금한 트랜잭션은 데이터 항목에 대해 읽기(read)만 가능
- 전용 Lock (Exclusive Lock) : 전용 잠금한 트랜잭션은 데이터 항목에 대해서 읽기(read)와 기록(write)가 모두 가능
2. 직렬성 보장을 통해 동시성을 제어하는 2Phase Locking 기법
가. 2Phase Locking의 개념도
- 모든 트랜잭션들이 lock과 unlock연산을 확장Phase와 수축Phase로 구분하여 수행함
- 확장Phase : 트랜잭션은 lock 만 수행할 수 있고 unlock은 수행할 수 없는 Phase
- 수축Phase : 트랜잭션은 unlock만 수행할 수 있고 lock은 수행할 수 없는 Phase
나. 2Phase Locking 기법의 문제 및 해결
- 2Phase Locking 기법이 deadlock의 완전한 제거를 나타내지는 못함
- 2Phase Locking 기법 상태에서 Cascading rollback이 가능함
- 교착상태 예방과 교착상태 탐지로 해결
다. 기본적인 2Phase Locking의 문제점을 피하기 위한 Locking 기법
종류 | 내용 | 특징 |
Strict 2PLP | - 2Phase Locking - 모든 독점 lock(Lock-X)는 해당 트렌젝션이 완료될 때까지 unlock 하지 않음. 그대로 유지 |
- 연쇄복귀(Cascacding rollback) 문제 발생하지 않음 - Deadlock 회피 못함 |
Rigorous 2PLP | - 2Phase Locking - 모든 lock는 해당 트랜젝션 이 완료될 때까지 unlock 하지 않음. |
- Strict 2PLP보다 더 제한적 - Deadlock 회피 못함 |
Static (Conservative) 2PL | - Transaction 수행 전부터 해당 트렌젝션의 읽기 집합과 쓰기집합을 미리 선언하여 해당 트렌젝션이 접근하려는 모든 항목들에 Lock을 획득 | - Dead lock 발생 하지 않음. - 현실성 없음 |
'1. IT Story > DB' 카테고리의 다른 글
Amazon AWS Aurora DB 구축 Q&A 정리(2020) (0) | 2020.12.24 |
---|---|
Oracle MySQL 운영관리 Q&A 정리(2020) (0) | 2020.12.24 |
Oracle 11G RAC Engine,OCR,VOTE Backup/Recovery(백업/복구) (0) | 2020.12.24 |
대량 데이터 변경 세션 KILL 수행 후, ROLLBACK 모니터링 방법 (0) | 2020.12.24 |
Oracle Database Appliance(X5-2) Disk Online replacement (0) | 2015.12.30 |
Adding MySQL Cluster Data Nodes Online (0) | 2015.12.24 |
MySQL Monitor Tool Install (0) | 2015.12.24 |
Oracle 서비스지원(SR) 신청 방법 (0) | 2015.10.07 |