Oracle 에서 Latch 와 Lock(Enququ)에 대해 알아봅니다
Lock(Enqueue) 란?
Job들을 줄세운 뒤에 순서대로 처리한다
특징1) 요청 순서를 보장한다
특징2) 줄을 관리하는 별도의 관리job이 필요하다
특징3) 단일 처리 시간이 상대적으로 오래걸린다 (관리job은 줄이 비워진걸 확인하고 다음 job을 실행하게 해줘야함)
Latch란 ?
Job들이 끊임없이 자원을 차지하려고 시도함 (무질서한 할인판매대 같음 - 내가 늦게왔어도 먼저 잡으면 장떙)
경량화된 lock 이라 한다
특징1) 요청 순서를 보장하지 않느다
특징2) 줄을 관리하는 별도의 관리job이 필요없다
특징3) 단일 처리 시간이 매우 빠르다 (중간에 관리 job의 업무가 빠짐)
- Oracle에서 접속자들은 동시에 SGA 영역을 사용하는데 그때 개별적인 프로세스들이 Latch를 잡는다
- 일부 Latch는 순서를 보장하기도 한다
Mutex는?
OS의 Mutex 개념을 Oracle에서 비슷하게 구현한게 Latch다
특성 | Lock(Enqueu) | Latch | Mutex |
사용범위 | 테이블, DB lock등 오브젝트에 접근제어를 위해 사용 대부분 transaction단위 |
SGA 내부의 데이터 구조의 접근제어를 위해 사용 | SGA의 Library Cache 영역에 적용 (주로 Parsing) Oracle이 10G부터 Latch를 개선한 Mutex를 개발해서 Latch 대신 사용 |
실행속도 | C,C++로 구현이되어 OS FIFO를 이용 구현이 복잡하고 상대적으로 느리다 |
CPU register에 직접 Access하는 CPU로직 구현으로 매루 빠름 | OS Mutex 사용 빠름 |
지속시간 | 일정시간동안 지속 (tx) | 짧음 (microSecond단위) | 짧음 |
요청 순서보장 | 순서보장 lock 획득을 실패하면 , Enqueue된다 (no wait 모드는 예외) |
queue로 관리X 요청한 순서대로 처리 되지 않음 |
순서보장 X |
범위 | DB 내부에 정보가 존재 모든 Instance에서 보임 (RAC) |
SGA 내부에 정보가 있음 local instance에서만 보임 |
SGA 내부에 정보가 있음 local instance에서만 보임 |
획득방식 | S,IS,X,IX,등 6가지 모드 | willing-to-wait 방식 또는 no-wait |
'DBMS > Oracle' 카테고리의 다른 글
[Oracle] Wait event - Free Buffer Waits , db file parallel write, write complete waits (0) | 2024.05.15 |
---|---|
[Oracle] Wait Event - Buffer Cache (0) | 2024.05.15 |
[Oracle] Wait event - Direct Path Read & Direct Path Write (0) | 2024.04.28 |
[Oracle] Wait event - DB File Sequential Read & DB File Scattered Read (0) | 2024.04.28 |
[Oracle] Wait Event (0) | 2024.04.19 |