본문 바로가기

oracle11R2/SQL Tuning 11g

Oracle Database 11g:SQL Tuning Workshop Practice 더보기
Oracle Database 11g:SQL Tuning Workshop 더보기
11장. 자동 SQL 튜닝 11장. 자동 SQL 튜닝 학습 목표 이번 장을 완료하면 다음과 같은 작업을 수행 할 수 있다. ① 문장 프로필을 설명 할 수 있다. ② SQL Tuning Advisor를 사용 할 수 있다. ③ SQL Access Advisor를 사용 할 수 있다. ④ Automatic SQL Tuning을 사용 할 수 있다. SQL 문장 자동 튜닝 자동 SQL 문장 튜닝은 전체 SQL 튜닝 과정을 자동화하는 쿼리 Optimizer의 능력이다. 이 자동화 처리는 복잡하고 반복적이며 많은 시간을 소비하는 직접 SQL 튜닝을 대체한다. SQL Tuning Advisor는 사용자에게 SQL 튜닝의 기능을 노출한다. 향상된 쿼리 Optimizer는 두 가지 모드를 갖는다. ① 정상 모드(normal mode)에서 Optimi.. 더보기
10장. 애플리케이션 튜닝 10장. 애플리케이션 튜닝 학습 목표 이번 장을 마치면 다음과 같은 작업을 수행 할 수 있다. ① 세션 통계를 수집하기 위한 SQL Trace 기능 설정 ② SQL 트레이스 파일들을 통합하기 위한 TRCSESS 유틸리티의 사용 ③ tkprof 유틸리티를 이용하여 트레이스 파일들의 포맷팅 ④ tkprof 명령에 의한 출력 해석 말단 애플리케이션에 대한 트레이스의 필요성 그림 10-1 사용자가 트레이스 메커니즘을 활성화하면, 오라클 데이터베이스는 각 서버 별 하나의 트레이스 파일을 생성하여 트레이스를 수행한다. 전용 서버 모델(dedicated server model)에서는 특정 클라이언트를 트레이스하는 것이 특별한 문제가 되지 않는데, 하나의 전용 서버 프로세스가 하나의 세션을 담당하기 때문이다. 해당 세.. 더보기
09장. 옵티마이저 힌트 사용 9장. Optimizer 힌트 사용 학습 목표 이번 장을 완료하면 다음과 같은 작업을 수행 할 수 있다. ① 힌트의 사용 ② 다음과 같은 작업을 위해 힌트 사용 - Optimizer 모드 - 쿼리 변환 - 액세스 경로 - 조인 순서 - 조인 방법 Optimizer 힌트 : 개요 그림 9.1 힌트는 Optimizer의 판단에 영향을 미친다. 힌트는 Optimizer가 주어진 조건하에서 특정 쿼리 실행 계획을 사용하도록 지시하는 메커니즘을 제공한다. 예를 들어, 특정 쿼리의 경우, 특정 인덱스의 선택도가 높다는 사실을 알고 있을 수 있다. 이러한 정보를 Optimizer가 추천하는 실행 계획보다 더 효율적인 실행 계획을 사용하도록 지시 할 수도 있다. 그러한 경우, 힌트를 사용하여 Optimizer가 최적의.. 더보기
08장. 바인드 변수의 사용 8장. Bind 변수의 사용 학습 목표 이번 장을 완료하면 다음과 같은 작업을 수행 할 수 있다. ① Bind 변수를 사용하여 얻을 수 있는 이득을 나열 할 수 있다. ② Bind 엿보기를 사용 할 수 있다. ③ 적응형 커서 공유를 사용 할 수 있다. 커서 공유와 서로 다른 Literal 그림 8.1 만약, WHERE 절에 Literal이 포함 된 SQL 문장을 사용한다면 라이브러리 캐시에 저장된 거의 동일한 SQL의 여러 버전으로부터 결과를 얻을 수 있다. 각 SQL 문장이 서로 다른 값과 함께 제출 되고, 라이브러리 캐시 내에서 해당 문장이 발견되지 않으면 새로운 SQL 문장을 처리하기 위해 모든 절차를 반드시 수행하여야 한다. 이로 인하여 불필요한 문장 파싱이 발생 할 뿐만 아니라 유사한 문장들로 .. 더보기
07장. 옵티마이저 통계 7장. 옵티마이저 통계 학습 목표 이번 장을 완료하면 다음과 같은 작업을 수행 할 수 있다. ① 옵티마이저 통계 수집 ② 시스템 통계 수집 ③ 정적 선호도 설정 ④ 동적 샘플링 사용 ⑤ 옵티마이저 통계 조작 옵티마이저 통계 옵티마이저 통계는 데이터베이스와 데이터베이스 내부의 객체들에 대한 구체적인 정보를 표현한다. 이 통계는 각 SQL 문장에 대한 최상의 실행 계획을 선택하기 위해 옵티마이저에 의해서 사용 된다. 데이터베이스 내의 객체들은 지속적으로 변경되기 때문에 통계는 정기적으로 갱신되어야만 이러한 데이터베이스 객체들을 정확하게 표현 할 수 있다. 통계는 오라클 데이터베이스에 의해 자동적으로 유지되거나 DBMS_STATS 패키지를 사용하여 직접 관리 할 수 있다. 옵티마이저 통계의 유형 대부분의 옵티.. 더보기
06장. 케이스 스터디 : 스타 변환 6장 케이스 스터디:스타 변환 학습 목표 이 장을 완료하면 다음과 같은 작업을 수행 할 수 있다. ① 스타 스키마를 정의한다. ② 변환 없는 스타 쿼리의 실행 계획을 보여 줄 수 있다. ③ 스타 변환의 요구사항을 정의 할 수 있다. ④ 변환 후, 스타 쿼리의 실행 계획을 보여 줄 수 있다. 스타 스키마 모델 그림 6.1 스타 스키마는 가장 단순한 DataWarehouse 스키마이다. 이 스키마의 ERD는 중앙 테이블에서부터 사방으로 꼭지점이 뻗어 있는 별 모양을 닮았기 때문에 스타 스키마라고 부른다. 스타 스키마의 중앙은 하나 이상의 팩트 테이블로 구성되고, 꼭지점은 디멘젼 테이블이다. 스타 스키마는 DataWarehouse 내의 주요 정보를 포함하는 하나 이상의 대용량 팩트 테이블과 팩트 테이블의 속성.. 더보기
05장. 실행 계획의 해석 5장. 실행 계획의 해석 학습 목표 - 실행 계획의 수집 - 실행 계획의 표시 - 실행 계획의 해석 실행 계획은 무엇인가? 실행 계획은 옵티마이저의 출력물이며, 실행 엔진에게 제공된다. 실행 계획은 쿼리가 요청하는 데이터를 가장 효율적으로 읽기 위해 반드시 수행해야 할 작업을 실행 엔진에게 지시한다. EXPLAIN PLAN 문장은 SELECT, UPDATE, INSERT, DELETE 문장에 대하여 오라클 옵티마이저가 선택한 실행 계획을 수집한다. 실행 계획의 단계는 부여된 번호 순으로 수행되지 않는다. 각 단계들 사이에는 부모-자식 관계가 존재한다. 행 원본(Row Source) 트리는 실행 계획의 핵심이며, 다음 정보를 표시한다. ① 해당 문장에 의해 참조되는 테이블의 순서 ② 해당 문장에서 참조 된.. 더보기
04장. 옵티마이저 연산자 4장. 옵티마이저 연산자 학습 목표 이번 장을 완료하면 다음과 같은 항목을 수행 할 수 있다. - 대부분의 SQL 연산자를 설명 할 수 있다. - 사용 가능한 액세스 경로를 나열 할 수 있다. - 조인 작업의 수행 방법을 설명 할 수 있다. 행 원본(Row Source) 작업 행 원본은 반복하여 행들의 집합을 처리하고 행 집합을 생성하는 반복적인 제어 구조이다. 행 원본은 다음과 같이 분류 할 수 있다. ① 단항(unary) 연산 : 액세스 경로와 같이 오직 하나의 입력에 대해서만 작업하는 연산 ② 이항(Binary) 연산 : 조인과 같이 두 개의 입력에 대해서 작업하는 연산 ③ N항(N-ary) 연산 : 관계형 연산자와 같이 여러 개의 입력에 대하여 작업하는 연산 액세스 경로는 데이터베이스의 데이터에 .. 더보기
03장. 옵티마이저 개요 3장. Optimizer 개요 학습 목표 이번 장을 완료하면 다음과 같은 작업을 수행 할 수 있다. - SQL 문장의 수행 단계를 설명 할 수 있다. - Optimizer가 필요로 하는 것들을 설명 할 수 있다. - 최적화 과정의 내부 수행 절차를 설명 할 수 있다. - Optimizer의 동작을 제어 할 수 있다. SQL(Structured Query Language) 그림 3.1 SQL은 모든 프로그램들과 사용자들이 Oracle Database 내의 데이터에 액세스 할 때 사용하는 언어이다. 애플리케이션 프로그램들과 Oracle 툴들은 때때로 사용자들이 SQL을 직접 사용하지 않고 Database에 접근 할 수 있도록 해주지만, 이러한 애플리케이션들은 사용자의 요청을 실 행 할 때 사용자 또는 애플리.. 더보기
02장. SQL 튜닝 개요 2장. SQL 튜닝 개요 학습 목표 이번 장을 완료하면 다음과 같은 작업을 수행 할 수 있다. ① SQL 문장의 어떤 속성이 성능을 저하시키는지 설명 할 수 있다. ② SQL을 튜닝 하는데 사용 할 수 있는 오라클 도구들을 나열 할 수 있다. ③ 튜닝 작업을 나열 할 수 있다. 비효율적인 SQL 성능의 원인 SQL 문장은 다음과 같은 다양한 원인으로 인해 성능이 저하된다. ① 오래된 옵티마이저 통계 : SQL 실행 계획은 CBO(Cost-based optimizer)에 의해 생성된다. CBO는 가장 효율적인 실행 계획을 선택하기 위해, 해당 쿼리에서 참조되는 테이블 및 인덱스들의 데이터 양과 분포에 대한 정확한 정보를 필요로 한다. 정확한 옵티마이저 통계가 없으면, CBO는 준 최적화 된 실행 계획을 유.. 더보기
01장. 오라클 데이터베이스 아키텍처 1장. 오라클 데이타베이스 아키텍처 학습목표 이 장을 완료하면 다음과 같은 작업의 수행이 가능하다. - 오라클 데이터베이스 서버의 주요 아키텍처 구성요소를 나열 할 수 있다. - 메모리 구조를 설명 할 수 있다. - 백그라운드 프로세스들을 설명 할 수 있다. - 논리적 저장 구조와 물리적 저장 구조를 상호 연관 시킬 수 있다. 오라클 데이터베이스 서버 아키텍처 : 개요 그림 1.1 오라클 데이터베이스 서버는 오라클 데이터베이스와 하나 이상의 오라클 데이터베이스 인스턴스로 구성된다. 하나의 인스턴스는 메모리 구조와 백그라운드 프로세스들로 구성된다. 인스턴스가 시작 될 때마다, SGA(System Global Area)라고 부르는 공유 메모리가 할당되고 백그라운드 프로세스들이 시작된다. SGA는 하나의 오라.. 더보기