728x90
Enqueue Lock
- Enqueue는 공유 리소스에 대한 액세스를 관리하는 Lock 메커니즘이다.
- Enqueue에 의해 보호되는 공유 리소스로는 테이블, 트랜잭션, 테이블스페이스, 시퀀스, Temp 세그먼트 등이 있다.
- Enqueue Lock은 래치와 달리 순서가 보장되는 Queue를 사용한다.
- Enqueue 리소스는 소유자, 대기자, 목록을 관리할 수 있는 구조체를 말한다.
- 소유가자 Exclusive 모드일 때는 한 순간에 하나의 세션만 Lock을 획득할 수 있지만, Shared 모드일 때는 여러 세션이 동시에 Lock을 획득할 수 있다.
TX Lock(트랜잭션 Lock)
- 트랜잭션이 시작하면 Undo 세그먼트 헤더에 위치한 트랜잭션 테이블로부터 슬롯을 하나 할당받는다.
- 다른 트랜잭션이 Consistent 버전을 얻으려고 트랜잭션 슬롯에 기록된 상태 정보를 확인하고, 필요하다면 CR블록을 읽는다. → 때문에 오라클은 레코드가 갱신중이더라도 읽기 작업을 수행할 수 있다.
- 변경 중인 레코드를 동시에 변경하려는 트랜잭션에 대해서는 액세스를 직렬화하는 메커니즘을 가지고 있다.
TM Lock(Table Lock)
테이블을 보호하는 Lock
오라클은 로우 Lock 획득 시(항상 Exclusive), 해당 테이블에 대한 테이블 Lock도 동시에 획득한다. 대신, 여기서 테이블 Lock을 설정하더라도 다른 트랜잭션이 블로킹 된다는 의미가 아니다.
쿼리문을 수행하는 도중, 해당 테이블이 ALTER/DROP 되는 것을 막기 위해 설정한다.
'Database' 카테고리의 다른 글
DB-1093-error (0) | 2023.06.10 |
---|---|
조인 쿼리 변환 (0) | 2023.06.10 |
Lock Escalation (0) | 2023.06.10 |
오라클 MVCC 패턴 (0) | 2023.06.10 |
select for update 문 (0) | 2023.06.10 |