본문 바로가기

---- Book Cafe ----/Expert Oracle Practices

(2)
슬립과 스핀 (Sleep and Spin) 슬립과 스핀 (Sleep and Spin) 래치 획득 알고리즘은 슬립, 스핀 방식을 사용한다. 래치를 즉시 획득하지 못하면, 프로세스는 슬립 상태로 전환하여 대기 후 다시 획득시도를 해야 할 수도 있다. 슬립이라 함은 프로세스가 자진하여 CPU 리소스를 반납하고 정해진 시간동안 '잠' 을 자는 것을 의미한다. 하지만 프로세스가 슬립 상태로 전환하는 과정에서 성능에 영향을 주는 컨텍스트 스위치( context switch ) 가 일어나기 때문에 빈번한 슬립 현상은 바람직하지 않다. 일반적으로 래치는 획득 후 몇 ns(nanosecond : 10억분의 1초) 만에 반환되며, 고비용의 컨텍스트 스위치를 수행하기 보다는 차라리 실패를 감수하더라도 반복적으로 래치획득을 시도하는 것이 나은 경우가 많다. 따라서 오..
래치 (Latch) 래치는 오라클 데이터베이스의 주요 구조에 대한 변경 작업을 직렬화 하기 위해 사용되는 메커니즘이다. 래치는 여러개의 세션이 SGA 내의 주요 리소스를 동시에 변경하는 일이 발생하지 않도록 보호하는 직렬화 메커니즘이다. 세션이 SGA 내의 특정 영역을 조회하거나 변경하기 위해서는, 관련 래치부터 먼저 획득해야 한다. 래치는 엔큐(enqueue : 락이라고도 불림) 와는 매우 다른 속성을 가지고 있다. 엔큐는 특정 테이블이나 로우를 대상으로 상충되는 오퍼레이션이 동시에 발생하지 않도록 하기 위해 오브젝트 또는 로우를 잠그는 역할을 하며 세션들은 총 6 개의 모드로 리소스에 락을 걸 수 있다. 반면에, 래치는 공유모드와 배타적 모드만 존재한다. 또한 엔큐는 큐(queue)메커니즘에 의해 관리되며, 큐에 먼저 ..