본문 바로가기

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

슬립과 스핀 (Sleep and Spin)

슬립과 스핀 (Sleep and Spin)

래치 획득 알고리즘은 슬립, 스핀 방식을 사용한다.

래치를 즉시 획득하지 못하면, 프로세스는 슬립 상태로 전환하여 대기 후 다시 획득시도를 해야 할 수도 있다. 
슬립이라 함은 프로세스가 자진하여 CPU 리소스를 반납하고 정해진 시간동안 '잠' 을 자는 것을 의미한다. 하지만 프로세스가 슬립 상태로 전환하는 과정에서 성능에 영향을 주는 컨텍스트 스위치( context switch ) 가 일어나기 때문에 빈번한 슬립 현상은 바람직하지 않다. 

일반적으로 래치는 획득 후 몇 ns(nanosecond : 10억분의 1초) 만에 반환되며, 고비용의 컨텍스트 스위치를 수행하기 보다는 차라리 실패를 감수하더라도 반복적으로 래치획득을 시도하는 것이 나은 경우가 많다. 따라서 오라클은 프로세스가 정해진 횟수(_SPIN_COUNT Parameter) 만큼 래치획득 시도를 하고, 그 후에 비로소 슬립 상태로 빠지도록 하고 있다.
이처럼 슬립 상태로 돌입하기 전에 반복적으로 래치획득을 시도하는 행위를 스핀이라 한다.

관련 View 는 아래를 참조
v$latch
v$latch_parent
v$latch_children

Reference : 래치 경합의 진단 in Expert Oracle Practices

'---- Book Cafe ---- > Expert Oracle Practices' 카테고리의 다른 글

래치 (Latch)  (0) 2011.07.23