오라클 성능 고도화 원리와 해법 I (2016년-2)
대기 이벤트 0 0 3,984

by 구루비 Wait Event 대기 이벤트 [2016.10.25]


h1.10.대기 이벤트란

h3.(1) 대기 이벤트란?

  • 오라클 인스턴스도 프로세스 간 커뮤니케이션과 상호작용이 필요하고 때로는 다른 프로세스가 일을 마칠 때까지 기다려야만 하는 상황이 자주 발생한다.
  • 오라클 프로세스는 일을 계속 진행할 수 있는 조건이 충족될 때까지 수면(sleep) 상태에 빠지는 현상이 발생하는 것을 '대기 이벤트(Wait Event)' 라고 부른다. 그리고 그때마다 오라클은 그 상태정보를 파일 또는 SGA 메모리 내에저장해둔다.

h3.(2) 대기 이벤트는 언제 발생할까?

  • 다른 프로세스가 일을 끝마치기를 기다릴 때 발생하는 대기 이벤트가 지속적으로 많이 발생하면 데이터베이스에 병목이 있음을 알리는 신호지만 모든 대기 이벤트가 그렇지는않다.

1. 자신이 필요로 하는 특정 리소스가 다른 프로세 스에 의해 사용 중일 때
2. 다른 프로세 스에 의해 선행작업이 완료되기 를 기다랄 때
3. 할 일 이 없을 때(- idle 대기 이벤트)

h3.(3) 대기 이벤트는 언제 사라질까?

  • 오라클 프로세스도 수면 상태로 들어갈 때 타이머를 설정한다.
  • 타임아웃(timeout) 설정 값은 대기 이벤트마다 모두 다르다.
  1. DBWR와 LGWR간상호작용에 의한 대기 이벤트 발생 시 타임아웃은 둘 다 3초
  2. 커멋할 때마다 LGWR를 깨워 Redo 버퍼를 비우도록 할 때 발생하는 log file sync 대기 이벤트의 타임아웃은 1초
  3. buffer busy wait 대기 이벤트도 1초
  4. enqueue 관련 Lock 대기 이벤트의 타임아웃은 3초

h3.(4) 래치와 대기 이벤트 개념 명확화

  • v$latch 뷰를 조회해 보면, 각 래치 종류별로 gets, misses, spin_gets, sleeps 항목들 이 집계돼 있는데
  1. gets : 래치 요청 횟수를 말한다 .
  2. misses 다른 프로세스에 의해 자원이 사용 중이어서 첫 번째 시도에서 곧바로 래치를 얻지 못한 횟수다.
  3. spin_gets : 래치를 요청한 첫 번째 시도에서 실패후 spin하는 과정에서 래치 획득에 성공한 횟수다.
  4. sleeps : 래치를 얻지못하여 대기 상태로 빠진횟수
"구루비 DB 스터디 모임" 에서 2016년에 "오라클 성능 고도화 원리와 해법 I " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3145

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입