• 검색 결과가 없습니다.

SQL 파싱과 실행계획 13

N/A
N/A
Protected

Academic year: 2022

Share "SQL 파싱과 실행계획 13"

Copied!
13
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

데이터베이스 (2017-2)

SQL 파싱과 실행계획 13

a. SQL의 수행

b. 파싱의 종류와 특징

c. 옵티마이저와 SQL 실행계획

(2)

데이터베이스 (2017-2)

SQL의 실행 순서 (최초 수행시)

1. 파싱 (Parsing)

• 문법 오류(Syntex Error) 체크

• 의미 오류(Semantic Error) 체크

• 파싱 수행 (하드 파싱)

• Hash 및 커서를 Library Cache에 등록 (이후 소프트 파싱)

2. 최적화 (Optimization)와 실행 계획 수립 (Row Generation Plan)

• 탐색 트리 생성 및 실행 계획 수립

3. 실행 (Execution)

• Server Process가 필요한 자원을 취득한 뒤 작업을 수행

4. 추출 (Fetch)

• 결과 값을 반환

1

(3)

데이터베이스 (2017-2) 2

Shared Pool 구조

Shared Pool

Library Cache Shared SQL Area ( SQL 쿼리/실행 계획 )

Data Dictionary Cache

Result Cache Reserved Pool

SQL 또는 PL/SQL 코드를 모두 보관하는 장소 사용된 SQL 및 실행계획이 파싱 되어 보관됨.

Select * from customer where id=‘005’

Hard Parsing Soft Parsing 해당 SQL이 Library

Cache에 존재하는가 ?

No Yes

테이블/인덱스등의 Ojbect 정의, 사용자명, Role , 권한등의 정보를 보관하는 장소

주로 사용자가 해당 Object에 접근 가능 권한이 있는지 확인하는데 사용

사용자 SQL의 결과 값을 지속적으로 보관 동일한 SQL이 요청될 경우 Buffer 나 Disk I/O Access 작업을 수행하지 않고 Result Cache에 있는 값을 그대로 반환

(4)

데이터베이스 (2017-2) 3

Hard Parsing 과 Soft Parsing

Hard Parsing Soft Parsing

SQL Parser Query

Transformer Estimator Plan Generator

Schema

Objects Statistics

생성된 실행계획을 Library Cache에 보관

SQL 및 실행계획이 Library Cache에 존재하지 않아 SQL의 실행계획을 처음부터 Parsing, Transforming ,

Estimating , Plan Generation 등의 복잡한 단계를 거쳐서 만들어 지는 Parsing

SQL Parser

Object 에 대한 사 용자 접근 권한

기존에 Library Cache에 있는 SQL 실행계획 사용

SQL 및 실행계획이 Library Cache에 존재하므로 해당 Object 에 대한 사용자 접근 권한정도만 확인한 뒤에 Library Cache 에 있는 SQL 실행 계획을 그대로 사용하는 Parsing

• 존재하는 코드를 재사용할 수 없을 때 – 새로운 실행 가능한 코드가 필요할 때의 명령

• Hard Parse 혹은 Library cache miss라고도 함

• DDL에 대해서는 언제나 Hard Parse가 됨

• library cache와 data dictionary cache에 여러번 접근 하게 되며, latch를 요청하게 됨

• Hard Parse가 아닌 모든 parse

• 기존의 코드를 재사용하는 것

• Library cache hit이라고도 함

• soft parse가 optimization과 row source generation 단계를 거치지 않고 바로 실행으로 직행하기 때문에, 일반적으로 hard parse보다 선호됨

(5)

데이터베이스 (2017-2) 4

Overview of SQL Processing

SQL 구문

Syntax Check

Semantic Check Shared

Pool Check

Optimization

Row Source Generation

Execution

(6)

데이터베이스 (2017-2)

SQL 구문

Syntax Check

Semantic Check Shared

Pool Check

Optimization

Row Source Generation

Execution

5

Overview of SQL Processing

• 구문의 철자가 맞는지(SELECT, FROM 등) 검사

• SQL의 의미가 적합한지(작성된 테이블의 실존 여부 등) 검사

(7)

데이터베이스 (2017-2)

SQL 구문

Syntax Check

Semantic Check Shared

Pool Check

Optimization

Row Source Generation

Execution

6

Overview of SQL Processing

• 보통DB는 SQL에 대한 Hash값을 갖고 있는데, 이것을 통 해 Hard/Soft Parsing 여부가 결정됨

• 입력된 SQL을 Hash 하여 Library cache에 해당되는 값 이 있는지를 검사

• Library cache hit시, 바로 실행

• Library cache miss시, 최적화 단계로 넘어감

(8)

데이터베이스 (2017-2)

Overview of SQL Processing

7

• 언급된 내용으로, 최소의 비용으로 해당 SQL을 실행할 수 있는 방법에 대한 결정을 진행함

• optimizer로 부터 최적의 실행 계획을 받아서 query plan이라고 불리는 순차적인 계획을 생성하는 소프트웨어로 이진 프로그램 임

• 보통 query plan은 몇 단계의 row set을 반환하는 단계의 조합 으로 이루어 짐 – 이것은 SQL이 실행되는 동안 여러 단계에서 사용될 수 있음

• row source는 각 단계에서 반환된 row set으로, 여러가지 형태 의 schema object로 나타날 수 있음

• 최종적으로 row source tree를 생성하는데, 이것은 row source 의 조함이고, 다음 정보를 담고 있음

• 구문이 참조하는 테이블의 순서

• 구문이 언급하는 테이블에 대한 접근 방법

• 구문이 언급한 join문의 테이블에 대한 접근 방법 • 데이터에 대한 필터링이나 정렬 등의 명령

SQL 구문

Syntax Check

Semantic Check Shared

Pool Check

Optimization

Row Source Generation

Execution

(9)

데이터베이스 (2017-2) 8

Overview of SQL Processing

• 실행시, SQL 엔진은 row source generator가 생성한 execution tree(parse tree)를 이용하여 실행을 진행함 – 이 과정은 DML의 경우에만 필수적으로 요청됨

• tree구조를 갖고, reverse하게 진행됨

• 각 박스는 어디에 어떻게 접근할지에 대한 정보를 갖고 있음

• 어느 단계는 어떤 단계들이 실행 된 것을 바탕으로 실행될 수 있는지에 대한

정보도 트리구조로 인하여 알 수 있음

메모리에 없는 데이터 호출시, 디스크에서 값을 읽어오게 되고, 이 때 데이터 정합성을 보장하기 위해 락과 래치 등을 필요로 함

SQL 구문

Syntax Check

Semantic Check Shared

Pool Check

Optimization

Row Source Generation

Execution

(10)

데이터베이스 (2017-2) 9

Optimizer SQL 실행계획 수행 절차

SQL Parser Query

Transformer Estimator Plan Generator

Row Source Generator

Parsed

Query Transformed

Query Query +

Estimates Query

Plan

Schema Objects Statistics

• 데이터 딕셔너리의 통계정보(데이터의 분포도, 테이블 저장구조, 인덱스 구조, 파티션 형태, 비교연산자 등을 감안하여 각 실행계획의 비용을 계산

• 사용자가 실행한 SQL은 데이터 딕셔너리를 참조하여 파싱을 수행.

• 옵티마이져는 파싱 결과를 이용해 논리적으로 적용 가능한 실행계획 형태를 선택하고,힌트를 감안하여 일차적으로 잠정적인 실행계획들을 생성

• 실행계획들의 산출된 비용을 비교하여 가장 최소의 비용을 가진 실행계획을 선택(최저가 입찰 방식이므 로 항상 최적의 결정이라고만 할 수는 없음)

Syntax Check &

Semantics Analyze

1

2

3

(11)

데이터베이스 (2017-2)

LAB: SQL 실행계획 확인

10

PROF> set autotrace on explain PROF> select * from emp;

Execution Plan

--- Plan hash value: 3956160932

---

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ---

| 0 | SELECT STATEMENT | | 14 | 532 | 2 (0)| 00:00:01 |

| 1 | TABLE ACCESS FULL| EMP | 14 | 532 | 2 (0)| 00:00:01 |

---

(12)

데이터베이스 (2017-2)

LAB: SQL 실행계획 확인

11 PROF> select ee.empno, ee.ename, ee.job, d.dname, em.ename from emp ee, emp em, dept d where ee.deptno =

d.deptno and ee.mgr = em.empno;

Execution Plan

--- Plan hash value: 453895177

---

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ---

| 0 | SELECT STATEMENT | | 13 | 624 | 7 (15)| 00:00:01 |

|* 1 | HASH JOIN | | 13 | 624 | 7 (15)| 00:00:01 |

|* 2 | HASH JOIN | | 13 | 494 | 5 (20)| 00:00:01 |

| 3 | TABLE ACCESS FULL| DEPT | 4 | 52 | 2 (0)| 00:00:01 |

|* 4 | TABLE ACCESS FULL| EMP | 13 | 325 | 2 (0)| 00:00:01 |

| 5 | TABLE ACCESS FULL | EMP | 14 | 140 | 2 (0)| 00:00:01 | --- Predicate Information (identified by operation id):

--- 1 - access("EE"."MGR"="EM"."EMPNO") 2 - access("EE"."DEPTNO"="D"."DEPTNO") 4 - filter("EE"."MGR" IS NOT NULL)

(13)

데이터베이스 (2017-2)

Q & A

참조

관련 문서

• 오라클, SQL 서버 등 일반적으로 알고 있는 데이터베이스 제품이 DBMS다..

• Q3_2: Join 조건이 없는 경우 => 카티전프 로덕트. SQL

• Client Application 이 Client Interface Library 를 통해 Server 와 통신. • Client Interface Library 는 Server 가 명령을 이해하고 Parsing 할 수 명령어를

Column paid is JDBC type -7 which is called BIT.. 다른 SQL 문장의 실행.

박지성이 구매한 책의 출판사와 같은 출판사에서 책을 구매한 고객들 이름 2. 박지성이 구매한 책의 출판사와 같은 출판사에서

Customer 테이블의 Primary Key 인 custid의 경우 테이블생성시 clustered index가 생성 PK가 없을경우 정상수행.. 자동 생성된 경우

 DB에 접속한 공격자는 시스템관리자 권한으로 백신프로그램이 설치된 모든 사용자 PC에 해킹프로그램 강제 설치 가능.  SQL Injection 공격이 가능하면 공격자는 DB

Object 파일 또는 중간파일 .OBJ 파일을 링커를 통해 실행(exe) 파일로 변환 (보안,호환, 컴파일 시간 절약).. 각종