Data

[1028 SQL]Ⅲ. SQL 고급 활용 및 튜닝-제7장 Lock과 트랜잭션 동시성 제어


제7장 Lock과 트랜잭션 동시성 제어

제1절 Lock
제2절 트랜잭션
제3절 동시성 제어

제1절 Lock

트랜젝션 동시 데이터접근, 무결성, 일관성 유지하기위해 사용

 

 

Blocking Lock 발생 특정세션이 작업을 진행하지못하고 멈춤
1. 트랜젝션 짧게 정의
2. 같은데이터 갱신 동시수행안되게 
3. timeout 설정
4. 격리성
5. 대기현상피하게 프로그래밍
교착상태 두 세션이 각각Lock설정한 리소스를 서로 액세스하려고 마주보며진행
종류 1. 공유잠금 Shared Lock 읽기작업시 여러 트랜잭션이 동시에 잠금획득가능
2. 배타잠금 Exclusive Lock 쓰기작업시 하나의 트랜잭션만 잠금 획득
3. 행잠금 Row Lock 동시성 높임. 
4. 테이블잠금 Table Lock 테이블 전체 잠금 설정 더 큰 범위 데이터 보호 
레벨 1. 로우레벨 변경하는 row에만 lock 설정
2. 페이지레벨 변경하려고 하는 row의 페이지에 row 설정 
3. 익스텐트레벨 sql server 의경우 하나의 익스텐트가 여덟개 페이지. 8개 페이지가 잠김
4. 테이블레벡 테이블전체, 관련 인덱스 잠김
5. 데이터베이스레벨 데이터베이스 전체 잠김, DB복구, 스키마 변경시
  Escalation  

제2절 트랜잭션

데이터베이스 작업의 논리적단위, 완전성, 일관성 보장  ACID
특성 1. 원자성 Atomicity 트랜젝션 작업 모두성공 or 모두 실패
2. 일관성 Consistency 트랜젝션 완료시 일관된 상태유지
3. 격리성 Isolation 독립적 수행, 다른 트랜잭션 받지 않아야. 
4. 지속성 Durability 성공완료시 결과는 영구적 저장. 
관리기법 1. commit    
2. rollback    
4. savepoint 트랜잭션 내에서 특정 시점의 저장 지점설정 부분롤백 가능. 

제3절 동시성 제어

 
  1. 잠금 기반 동시성 제어
Locking-Based Concurrency Control
2단계 잠금
2PL = 2-Phase Locking
잠금설정, 해제 두단계, 교착상태 방지 
  낙관정 동시성제어
Optimistic Concurrency Control
잠금없이 수행, 커밋시점 충돌검사 
  2. 타임 스탬프 기반 동시성 제어
Timestamp-Based Concurrency Control
각 트랜젝션 타임스탬프 부여, 트랜젝션간 순서 결정, 그 기반 동시성 제어 
  3. 다중버전 동시성제어  MVCC
Multi-Version Concurrency Control 
데이터 여러버전 유지 = 트랜젝션 시작될때 데이터 스냅샷 사용.
읽기 작업이 쓰기 작업을 방해하지 않도록.