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 액세스 발생량을 줄인다.