데지덤

  1. 데이터관련 직무와 자격
    1. 데이터베이스 직무

    2. 데이터베이스 자격

  2. 데이터관련 학습방법
    1. 데이터베이스 개론 학습

    2. DBMS 학습

    3. 읽어볼만한 DB책

  3. 최신동향과 유명한 Things
    1. DB최신동향

    2. 데이터로 유명한 Things

  4. 데이터베이스 개념
    1. 데이터베이스 개념

    2. DBMS

    3. 데이터베이스 개발과운영

  5. 데이터베이스 설계(1/2)
    1. 데이터표준

    2. 데이터모델링

    3. 데이터모델 디자인패턴

  6. 데이터베이스 설계(2/2)
    1. 프로세스및상관모델링

    2. 정규화

    3. 반(역)정규화

    4. DB물리설계

  7. 인덱싱과 DB프로그래밍
    1. 인덱스와 해싱

    2. 관계연산

    3. DB언어

    4. SQL

    5. 데이터베이스 미들웨어

  8. 데이터베이스 운영
    1. 트랜잭션

    2. 병렬처리

    3. 데이터베이스 복구

    4. 데이터베이스 성능

    5. 병행제어(동시성제어)

  9. 분석계 및 빅데이터기술
    1. 데이터웨어하우스

    2. 데이터마이닝

    3. 빅데이터기술

  10. 데이터거버넌스
    1. 데이터거버넌스

    2. 데이터베이스 감리/진단

  11. 데이터베이스 종류와 보안
    1. 데이터베이스 종류

    2. 데이터베이스 보안

  12. DBMS
    1. 오라클

    2. SQL Server

    3. DB2

    4. Sybase

    5. Altibase

Dynamic SQL

개념
프로그램 로직에 따라 Dynamic하게 SQL 구문을 String형 변수에 담아서 처리하는 방식

Dynamic SQL의 정의

- 프로그램 로직에 따라 Dynamic하게 SQL 구문을 String형 변수에 담아서 처리하는 방식

Static SQL과 Dynamic SQL의 비교

구현 방법의 비교

구분

구  현

설명

static

-SQL문을 변수에 담지않고 코드상에 섞어서 기술

Dynamic

String형 변수를 사용하므로 조건에 따라 SQL 구문을 동적으로 바꿀 수 있고, 런타임시에 사용자로부터 SQL 구문문의 일부 또는 전부를 입력 받아 실행 가능

Toad, Orange, SQL*PLUS와 같은 DBMS Tool에서 Dynamic SQL 사용

 

 

  나. 사용방법의 비교

구분

Static SQL

Dynamic SQL

SQL 구성

SQL구문을 CURSOR 선언하여 정적 처리

SQL 구문을 String형 변수에 담아 동적 처리

개발 패턴

Static SQL 은 SQL 구문이 변경되지 않아야 하기 때문에 일반적인 개발 패턴은 Static SQL 을 CURSOR절에 선언한 뒤 이를 BEGIN END 절 사이에서 Looping 구조로 데이터 처리

Dynamic SQL 은 SQL 구문이 변경 가능하므로 NVL()처리 불필요.

컬럼 구성

Static SQL 은 정적이기 때문에 컬럼 및 Where절 변경 불가

Dynamic SQL은 구문을 변수에 담아서 DBMS를 콜하기 때문에 변수나 칼럼등 모든 SQL을 로직으로 처리하여 자유롭게 SQL구문 사용

실행 계획

Optimizer는 NVL()처리가 되어있는 조건을 처리하기 위해 IS NULL, IS NOT NULL 로 나누어 실행계획 수립, 만약 6개 조건이 있다면 12개의 CONCATEMATION 으로 실행계획이 분할되어 실행 계획 수립을 위한 하드파싱 시간 장시간 소요

Optimizer 는 NVL()처리된 WHERE 조건이 없기 때문에 실행게획을 쪼깰 필요가 없고 그만큼 순수 액세스 패스에 대하여 실행계획을 수립하기 때문에 하드파싱 시간 최적화

장점

Dynamic에 비해 실행속도 우수

SQL문에 대하여 개발 시에 사전 검사가 가능

Application 내 각 SQL 구문에 대해 가장 최근 시점의 통계정보를 근거로 한 access plan 보유

SQL 구문은 개발시가 아닌, 실행시에 확정되므로, 보다 다양하고 유연한 application 개발이 가능

단점

개발 시에 SQL 구문 정의

Precompile, bind과정 필요

 

Static에 비해 처리속도 느림

실행전에 SQL 구문의 type, syntax, previlege checking이 불가능

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

다. 처리방식의 비교

STATIC    DYNAMIC
 
 
 

3. Dynamic SQL의 한계

   -Dynamic SQL이 static SQL 보다 개발 난이도가 높고, 개발시간도 현저히 증가

   -Static SQL은 직관적 방식으로 Readability 양호하나, Dynamic SQL은 프로그램 로직으로 SQL을 구현하므로 Readability 결여

   -고려사항 : 성능과 유연성에 대하여 Static SQL과의 Trade-off 고려

댓글