[3) 오라클 성능 관리]7. Response Time Analysis 방법론과 OWI

Yu River·2022년 5월 31일
0

Response Time Analysis 방법론과 OWI

(1) Response Time Analysis 방법론

CPU timeWait time을 각각 break down하면서 서버의 일량과 대기 시간을 분석한다.

1. Response Time

✅ Response Time 공식

  • Response Time = Servic Time + Wait Time
    또는
  • Response Time = CPU Time + Queue Time
  • 서비스 시간(Servic Time 또는 CPU time) : 프로세스가 정상적으로 동작하며 일을 수행한 시간
  • 대기 시간(Wait Time 또는 Queue Time) :: 대기 이벤트가 발생해 수행을 잠시 멈추고 대기한 시간

(2) OWI(Oracle Wait Interface)

  • Response Time Analysis 방법론을 지원하려고 오라클이 제공하는 기능과 인터페이스를 통칭한다.
  • Response Time Analysis 방법론에 기반한 튜닝의 요약은 병목해소 과정이다.

💡서버의 일량과 대기 시간 분석 예제

아래 쿼리를 수행하는 20개 프로세스가 동시에 떠서 작업을 수행하는 상황

INSERT INTO t1
SELECT /*+ ordered use_nl(t3) */ seq.nextbal, t2.*, t3.*
FROM t2, t3
WHERE t2.key = t3.key
and t2.col between :range1 and :range2; 

[첫번째 상황 분석]

1-1. 상황 분석

  • db file scattered read 대기 이벤트가 Wait time의 대부분을 차지한다.
    Full Table Scan 상황

1-2. 원인

  • t2 테이블 기준으로 NL 조인을 수행하면서 반복 액세스가 일어나는 t3 테이블 조인 컬럼에 인덱스가 없어 매번 Full Table Scan으로 처리하고 있기 때문이다.

1-3. 조치

  • 인덱스를 추가해 정상적인 Index Scan으로 처리한다.

[두번째 상황 분석]

첫번째 조치가 끝났지만 새로운 상황이 아래와 같이 발생한다고 가정한다.

2-1. 상황 분석

  • buffer busy waitslatch: cache buffers chains 이벤트가 새롭게 발생하게 된다.

    ✅ 대기 이벤트 종류

    • buffer busy waits : Exclusive 모드로 점유된 상태의 버퍼 블록 헤더의 Lock 대기자 목록(Waiter List)에 등록 후 래치를 해제한 뒤 선행 버퍼 Lock 해제시 획득하는 블록 단위의 버퍼 Lock을 얻는 과정에서 일어난다.
    • latch: cache buffers chains : 버퍼 캐시를 사용하기 위해 해시 체인을 탐색하거나 변경하기 위해 해당 체인을 관리하는 cache buffers chains 래치를 획득하는 과정에서 일어난다.

2-2. 원인

  • 서버 프로세스의 처리 속도가 크게 향상되면서 버퍼 블록에 대한 동시 액세스가 증가하면서 메모리 경합이 발생하기 때문이다.

2-3. 조치

  • 캐싱된 버퍼 블록에 대한 읽기 요청이 많아 생기는 문제이므로 블록 요청 횟수를 줄여야 한다. 따라서 NL조인을 해시 조인 방식으로 변경한다.

[세번째 상황분석]

두번째 조치가 끝났지만 또 새로운 상황이 다음과 같이 발생한다고 가정한다.😅

3-1. 상황 분석

  • log buffer spaceenq:SQ-contention 이벤트가 새롭게 발생한다.

3-2. 원인

  • select 경합이 해소되면서 insert에 의한 Redo 레코드 생성 속도가 증가하면서 Redo 로그 버퍼 공간이 부족하고 Sequence 테이블에 대한 경합이 발생한다.

3-3. 조치

  • Redo 로그 버퍼 크기를 약간 늘려준다.
  • Sequence 캐시 사이즈를 10에서 20으로 늘린다.

(3) Response Time Analysis 방법론을 지원하는 오라클

  • 버전을 거듭할 수록 대기 이벤트는 세분화 되고 있고, 유용한 동적 성능 뷰도 계속 증가하고 있다.
  • 10g부터는 쿼리를 이용하지 않고 직접 SGA 메모리를 액세스하기 때문에 더 많은 정보 수집이 가능하다.
  • Response Time Analysis 방법론을 지원하는 오라클 표준도구
    • Statspack
    • AWR
profile
도광양회(韜光養晦) ‘빛을 감추고 어둠속에서 힘을 기른다’

0개의 댓글