Enq: CI - contention

EXEM Knowledge Base

Jump to: navigation, 찾기

목차

[편집] Basic Info

System Type의 락에 의한 대기현상 중에는 경합에 의해 발생한다기 보다는 특정 작업을 처리하는 과정에서 다른 선행작업이 끝나는 것을 보장하는 과정에서 발생하는 것들이 있다. 앞서 논의한 enq: TC - contention 도 대표적인 경우인데, PQ를 수행하는 선행 작업으로서의 체크포인트 작업이 끝나기를 기다리는 과정에서 대기가 발생한다.


enq: CI - contention 이벤트 대기도 비슷한 경우에 해당한다. 오라클은 특정 테이블을 Truncate하기 전에 버퍼 캐시에 적재되어 있는 테이블 데이터의 더티 버퍼에 대해 체크포인트 작업을 수행해야 한다. 만일 Truncate 수행 도중 장애가 발생했더라도 이후 복구가 가능해야 하기 때문이다. Truncate를 수행한 서버 프로세스는 Truncate 작업이 끝날 때까지 대기해야 하는데, 흔히 enq: CI - contention 대기현상으로 관찰된다.


체크포인트, 로그 스위치(log switch), 셧다운(Shutdown) 등의 작업을 호출하는 것을 오라클에서는 Cross Instance Function이라고 부른다. 총 11개의 Cross Instance Function이 정의되어 있으며(오라클 8.0까지), Function마다 call, parameter, queue, return이라는 네 개의 단계마다 락을 획득해야 한다. 이때의 락을 CI 락이라고 부르며, CI 락을 획득하기 위해 기다리는 동안 enq: CI - contention 이벤트를 대기하게 된다. CI 락은 그 이름과는 달리 RAC 같은 멀티 노드(Multi Node) 환경에서뿐만 아니라 싱글 노드(Single Node) 환경에서 공통적으로 사용된다.


enq: CI - contention 은 경합에 의해 발생하는 것이 아니기 때문에 대부분의 상황에서는 성능 이슈와 직결되지 않는다. 하지만, 체크포인트와 관련된 일부 작업(Drop, Truncate 등)에서는 체크포인트 자체의 성능에 문제가 발생하는 경우 enq: CI - contention 대기에 의한 성능 저하가 종종 발생한다. 특히 동시에 여러 세션이 Truncate를 수행하는 경우 과다한 체크포인트에 의해서 시스템 성능이 극도로 저하되는 현상이 발생할 수 있다.

[편집] Parameter & Wait Time

[편집] Wait Parameters

  • P1 : Enqueue 정보
  • P2 : opcode
  • P3 : type

[편집] Wait Time

enqueue 대기이벤트와 동일하다. 최대 3초까지 기다린다. 만일 CI 락을 획득하기 못하면 획득할 때까지 대기한다.

[편집] Check Point & Solution

[편집] 오라클 10g R2로 업그레이드

오라클 10g R2로 업그레이드한다. 10g R2에서는 객체 체크포인트(Object Checkpoint)알고리즘이 크게 개선되어 이로 인한 성능문제가 많이 줄어든다. 실제로 오라클 9i나 10g R1에서 CI 락 경합이 발생했던 상황을 오라클 10g R2에서 재현하면 대부분의 문제가 해소되었다는 것을 확인할 수 있다.


Truncate와 관련해서 자주 관찰되는 대기현상이 한가지 더 있는데 바로 enq: RO - fast object reuse 대기현상이다. Truncate나 Drop과 같이 객체가 사용하는 공간(세그먼트)을 삭제하는 작업은 CKPT와 DBWR에 의해 실제로 삭제가 이루어질 때까지 기다리게 되는데 그동안 enq: RO - fast object reuse 이벤트를 대기하게 된다. RO 락은 오라클 10g 부터 객체 삭제시 객체 정보를 삭제후 재사용하는 작업을 동기화하는데 주로 사용되는 것으로 보이며, 불행히도 구체적이고 공식적으로 설명된 문서를 구하기가 어렵다. RO 락은 기본적으로 경합에 의한 성능저하 현상이 생길 소지는 없지만, 버그에 의한 성능 저하현상이 보고되고 있으므로 필요한 경우 메타링크 등을 통해서 자세한 정보를 찾아보아야 한다.

[편집] Event Tip

[편집] Analysis Case