▶Oracle Architecture

 

 

 

 

Oracle Server =Instance + Database

Instance =SGA Memory + Background Processes

Oracle Process =Background Process + Server Process

Server Process =Dedicated or Shared (MTS)

Database =Datafile + Redolog file + Control file + Parameter file

SGA Memory =Shared Pool + Buffer Cache +Log buffer

Shared Pool =Library Cache + Dictionary Cache + ……

 

▶Shared pool : SQL 수행 시 자주 사용되는 정보들을 공유

 

 

 Library cache 

 SQL 및 PL/SQL 공유 

 Row Cache

 SQL 연산에 참조되는 각종 딕셔너리 정보 공유 

 

 

▶Shared SQL Area

 

 

- SQL문장을 실행하기 위해 그 문장과 관련된 실행 계획과 구문분석 정보 보관

- 동일한 SQL문장은 서로 공유된다. (구문 분석 시간 감소 및 메모리 공유)

 

▶SQL Execution Plan/Parse Tree

- 어떤 방식으로 SQL문을 실행할 것인지 정해놓은 계획(구문분석단계)

- 최소한의 비용이 들도록 SQL옵티마이저(최적기)가 작성한다.

- 주변 환경을 고려하여 실행 경로 판단.

 # 인덱스를 제일 먼저 본다.

  - 테이블 인덱스를 사용할 것인가?

  - 한 테이블에 인덱스가 여러 개의 경우 어떤 것을 사용할 것인가?

 # 조인

  - 두 테이블 간에 어떤 조인을 수행할 것인가?

  - 테이블 간의 조인을 어떤 순서로 할 것인가?

 # 사용자의 힌트를 어떻게 처리할 것인가? 

 

 

▶구문분석

 ▷커서의 공유

 * 이미 수립된 실행계획을 공유해서 재 사용 (구문분석비용감소 / 메모리 사용개선)

 * 동일한 SQL 문장이란?

  - 텍스트 동일(대소문자 구분, 빈 칸, 주석 포함)

  - 사용자 및 참조 객체도 동일

  - 바인드 변수의 데이터 형식 동일

 * SQL 형식 표준을 정하여 코딩

  - 대소문자, 빈칸, 주석 사용 규칙(아예 SQL에 주석사용금지 등)

  - SQL문장을 동일한 위치에 따로 관리

  - 자주 쓰는 것은 PL/SQL로 대치

Q&A) library cache는 래치가 두개입니다. 부모LCO조회하기 위해 잡아야 되는 건 librarycache lock , 자식LCO는 library cache pin

 

▶Recursive SQL

* 단일 SQL문장이라도 파생적인 SQL실행 발생

* SQL문장 수행중에 내부적으로 수행되는 SQL

- SQL 구문 분석 단계 - SQL문장의 semantic 검증 / data dictionary 정보 질의

- DDL문장 수행 중 - 데이터 변경에 의해 DB구조변경 / data dictionary 정보 변경

'[기타SQL] > SQL tunning' 카테고리의 다른 글

4. oracle optimizer(미완)  (1) 2014.12.17
3. SQL 실행계획 확인 ★★★ (미완)  (0) 2014.12.16
1. 튜닝방법론 및 SQL처리구조  (0) 2014.12.16
Print Friendly and PDF Posted by JJ*
: