본문 바로가기
책과 부동산과 주식이야기

(SQLP SQLD 핵심 정리 6) 아키텍처 기반 튜닝 원리

by HB1오춘 2023. 12. 24.

클라이언트가 서버 프로세스와 연결하는 Oracle의 예

- 전용 서버(Dedicated Server) 방식

- 공유 서버(Shared Server) 방식

 

리두로그(REDO LOG) or 트랜잭션로그(TRANSACTION LOG)

- DB 버퍼 캐시에 가해지는 모든 변경 사항을 기록하는 파일을 말함.

- Oracle에서는 리두로그, SQL Server에서는 트랜잭션로그

 

Response Time Analysis 방법론

- Response Time을 정의하고, CPU Time과 Wait Time을 각각 break down 하면서 서버의 일량과 대기 시간을 분석해 나간다.

- CPU Time은 파싱 작업에 소비한 시간인지 아니면 쿼리 본연의 오퍼레이션 수행을 위해 소비한 시간인지를 분석한다.

- Wait Time은 각각 발생한 대기 이벤트들을 분석해 가장 시간을 많이 소비한 이벤트 중심으로 해결 방안을 모색한다.

 

소프트 파싱(Soft Parsing)

- SQL 과 실행계획을 캐시에서 찾아 곧바로 실행단계로 넘어가는 경우

 

하드 파싱(Hard Parsing)

- SQL 과 실행계획을 캐시에서 찾지 못해 최적화 과정을 거치고 나서 실행단계로 넘어가는 경우

 

바인드 변수(Bind Variable)

- 파라미터 Driven 방식으로 SQL을 작성하는 방법이 제공되는데 SQL과 실행계획을 여러 개 캐싱하지 않고 하나를 반복 재사용하므로 파싱 소요시간과 메모리 사용량을 줄여준다.

 

SQL 커서에 대한 작업 요청에 따른 데이터베이스 Call의 구분

- Parse Call

  : SQL 파싱을 요청하는 Call

- Execute Call

  : SQL 실행을 요청하는 Call

- Fetch Call

  : SELECT문과 결과 데이터 전송을 요청하는 Call

 

사용자 정의 함수 / 프로시저

- 내장함수처럼  Native 코드로 완전 컴파일 된 형태가 아니어서 가상머신(Virtual Machine) 같은 별도의 실행 엔진을 통해 실행된다.

- 실행될 때 마다 컨텍스트 스위칭(Context Switching)이 일어나며, 이 때문에 내장함수(Built-In)를 호출할 때와 비교해 성능을 상당히 떨어뜨린다.

 

Single Block I/O

- 한번의 I/O Call에 하나의 데이터 블록만 읽어 메모리에 적재하는 방식

 

Multi Block I/O

- I/O Call이 필요한 시점에, 인접한 블록들을 같이 읽어 메모리에 적재하는 방식

 

버퍼 캐시 히트율(Buffer Cache Hit Ratio)

- 버퍼 캐시 효율을 측정하는 지표

- 전체 읽은 블록 중에서 메모리 버퍼 캐시에서 찾은 비율을 나타낸다.

- 물리적인 디스크 읽기를 수반하지 않고 곧바로 메모리에서 블록을 찾은 비율을 말한다.

 

I/O 튜닝의 핵심 원리

- Sequential 액세스에 의한 선택 비중을 높인다.

- Random 액세스 발생량을 줄인다.