SQLP
시험 직전 요약장
판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.
Oracle Lock의 기본 구조: Row Lock·TX Enqueue·TM Enqueue·Lock Mode
원래 이론 →판단 기준
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 혼동하기 쉬운 판단 | 정확한 기준 |
|---|---|
| TX 행 하나가 잠긴 Row 한 건 | TX는 Transaction Resource이며 개별 Row 정보는 Data Block에 저장 |
enq: TX - row lock contention은 항상 같은 Row | Unique Key 후보와 Bitmap Fragment 충돌도 가능 |
| TM RX가 있으면 Table의 다른 DML 정지 | RX끼리는 호환되므로 서로 다른 Row DML 가능 |
| 대량 UPDATE는 자동 Table Lock Escalation | Oracle은 정상적으로 Row-to-Table Escalation을 사용하지 않음 |
| 일반 SELECT는 DML Row Lock을 기다림 | Undo 기반 Commit 버전을 읽으며 SELECT FOR UPDATE는 예외 |
Holder는 항상 REQUEST=0 | Conversion 대기에서는 LMODE>0과 REQUEST>0이 함께 가능 |
BLOCK=0이면 RAC 전체에서 Blocker 아님 | Remote Node 관계는 GV$LOCK과 Blocking Instance를 확인 |
V$LOCKED_OBJECT는 잠긴 Row 목록 | TM DML Lock을 보유한 Object 목록 |
ROW_WAIT_*는 과거 Lock 이력 | 현재 다른 Transaction Commit 대기 중일 때만 유효할 수 있음 |
헷갈리는 개념
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 구분 | Enqueue | Latch·Mutex |
|---|---|---|
| 대표 목적 | Transaction·Object Resource의 호환 Mode와 Queue 관리 | SGA 내부 자료구조의 짧은 보호 |
| 대표 예 | TX, TM, UL | Cache Buffers Chains Latch, Library Cache Mutex |
| 대기 성격 | 상대 Transaction 종료까지 길어질 수 있음 | 보통 짧은 내부 동기화지만 Hotspot에서는 누적 가능 |
| 해소 기준 | Holder의 Commit·Rollback·Mode Release | 내부 Critical Section 종료·CPU Scheduling |
| 진단 초점 | Resource ID, Holder, Requester, Wait Chain | Hot Structure, Spin·Sleep, CPU, Child Latch·Mutex Location |
library cache lock처럼 이름에 Lock이 들어가도 TX·
대표 계산·예제
행은 현재 보유 Mode, 열은 새로 요청하는 Mode로 이해합니다.
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 보유 \ 요청 | RS | RX | S | SRX | X |
|---|---|---|---|---|---|
| RS | 허용 | 허용 | 허용 | 허용 | 불가 |
| RX | 허용 | 허용 | 불가 | 불가 | 불가 |
| S | 허용 | 불가 | 허용 | 불가 | 불가 |
| SRX | 허용 | 불가 | 불가 | 불가 | 불가 |
| X | 불가 | 불가 | 불가 | 불가 | 불가 |
일반 INSERT, UPDATE, DELETE, MERGE, SELECT ... FOR UPDATE는 대상 Table에 주로 RX·
Constraint 부수 효과나 특정 작업에서는 일반적인 SX보다 더 강한 Mode가 잠깐 필요할 수 있으므로, SQL 종류만으로 항상 Mode를 고정하지 않고 실제 LMODE와 REQUEST를 확인합니다.
내 최근 연습 오답
현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.
오답 기록을 확인하고 있습니다.