enqueue lock과 latch 등 다양한 lock
작성자 관리자 작성시간 2016-02-13 12:37:37
 

0. 오라클의 다양한 lock

- 래치 : SGA에 공유돼 있는 갖가지 자료구조를 보호할 목적으로 사용하는 가벼운 Lock
- 버퍼 Lock : 버퍼 블록에 대한 엑세스를 직렬화
- 라이브러리 캐시 Lock : 라이브러리 캐시 오브젝트에 대한 핸들을 보호
- 라이브러리 캐시 Pin :  라이브러리 캐시 오브젝트의 실제 내용이 담긴 힙을 보호
- DML 테이블 Lock : Enqueue Lock으로 구현함
- DML 로우 Lock : 로우 단위 Lock과 트랜잭션 Lock을 조합해서 구현함

※ 어플리케이션 개발 측면에서 가장 중요한 것은 DML Lock이다!!

DML Lock을 이해하기 위해
Enqueue Lock 구조와 트랜잭션 Lock 개념을 이해하는 것이 중요하다.

1. Enqueue Lock

- 공유 리소스에 대한 엑세스를 관리하는 Lock 메커니즘
- Enqueue Lock은 이름 그대로 큐를 사용하기 때문에 대기자 큐에 가장 먼저 Lock 요청을 등록한 세션이 가장 먼저 Lock을 획득함
- Enqueue 리소스 : 소유자, 대기자 목록을 관리할 수 있는 구조체
  각 Enqueue 리소스에는 <Type-ID1-ID2>의 식별자가 부여된다.
    Type : TX, TM 등
    ID1,2 : Lock 종류에 따른 정보

      ex) TM lock 식별자
          Type : TM
          ID1 : 오브젝트 ID
          ID2 : 0

      ex) TX lock 식별자
          Type : TX
          ID1 : Undo세그먼트 번호 + 트랜잭션 슬롯번호
          ID2 : 트랜잭션 슬롯 Sequence 번호
   
- 리소스 테이블 : Enqueue 리소스 구조체를 통합 관리
    각 리소스를 찾을 때 해싱 알고리즘 사용(해시 키: 식별자)
    각 해시 버킷에는 연결리스트로 해시 체인 소유


목록 | 입력 | 수정 | 답변 | 삭제