3-1. 아키텍처 기반 튜닝 원리

1. 데이터베이스 아키텍처

2. SQL 파싱 부하

3. 데이터 베이스 Call과 네트워크 부하

4. 데이터베이스 I/O 원리

============================

 

. 전용 서버(Deficated Server) / 공유 서버(Shared Server)

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

 

. 세그먼트

– 테이블, 인덱스, Undo 처럼 저장공간을 필요로 하는 데이터베이스 오브젝트이다.

– 저장공간을 필요로 한다는 것은 한 개 이상의 익스텐트를 사용함을 뜻한다.

– SQL Server에서는 세그먼트라는 용어를 사용하지 않지만, 힙 구조 또는 인덱스 구조의 오브젝트가 여기에 속한다.

 

.  Redo 로그(Oracle) / 트랜잭션 로그(SQL Server)

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

 

. 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 Swithcing)이 일어나며, 내장함수(Built-In)를 호출할 때와 비교해 성능을 상당히 떨어뜨린다.

 

. Single Block I/O

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

 . MultiBlock I/O

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

 

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

– 버퍼 캐시 효율을 측정하는 지표로서, 전체 읽는 블록 중에서 메모리 버퍼 캐시에서 찾은 비율을 나타낸다.

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

 

. I/O튜닝 핵심원리

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

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

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다