카테고리 없음

데이터모델링-데이타베이스 설계와 이용

write8770 2024. 8. 11. 19:34

과목 6 데이타베이스 설계와 이용

 

1장 데이터베이스 설계

 1절 저장 공간 설계

  1.테이블

   .테이블

    - Heap-Oraginzed Table

      데이터 값의 순서에 관계 없이 데이터를 저장하는 일반 데이블

    - Index Oraginzed Table 또는 Clustered Index Table

      키 값의 순서대로 저장(기본키 또는 인덱스 순서)

    - Patition Table

      범위(Range), 해쉬 값(Hash), 목록(List)

      대용량 데이터베이스 환경에서는 반드시 고려해야 한다

    - External Table

      파이 데이터를 데이블 형태로 이용할 수 있는 테이블

      데이타웨어하우스(DW, Data Werehouse)에서

      ETL(Extraction, Transformation, Loading)작업 등에 유용한 데이블이다

    - Temporary Table

      트렌잭션이나 세션별로 데이처를 저장하고 처리 할 수 있는 데이블

      다른 세션에서 처리되는 데이터는 공유할 수 없다

     

   . 칼럼

    - 데이블을 구성하는 요소로 데이터 타입, 데이터 길이로 정의된다

    - 칼럼이 서로 참조 관계일 경우는 반드시 동일한 데이터 타입과 길이를 지정해야

      한다 만약 이를 지키지 못하면 조인(Join) 연산시 정상적인 실행 계획을 예측

      하기 곤란하다.

      또는 내부 연산을 통해 Join 연산이 일어나 인덱스가 있어도 사용하지 못할수

      있다

    * 물리적인 칼람 순서 조정

    - 고정 길이 칼럼이고 NOT NULL 인 칼럼은 선두

    - 가변 길이 칼럼을 뒤편

    - NULL 값이 많을 것으로 예상되는 칼럼을 뒤편에

    -> 값이 변경될때 체인(Chain)발생을 억제하고 저장 공간을 효율적으로 사용하게됨

   

    * 데이터 타입과 길이 지정시 다음과 같은 사항 고려

    - 가변 길이 데이터 타입은 예상되는 최대길이로 정의

    - 고정 길이 데이터 타입은 최소의 길이를 지정

    - 소수점 이하 자리 수의 정의는 반올림되어 저장되므로 정확성을 확인하고 정의

  

   . 데이블 설계시 고려사항

    - 칼럼 데이터 길이의 합이 1Block또는 페이지 사이즈 보다 큰 겨우는 수직 분할을

      고려한다 (Chain 발생으로 속도 저하됨)

    - 칼럼 길이가 길고 특정 칼럼의 사용 빈도 차이가 심한 경우이거나 다른 사용자

      그룹이 특정 칼럼만을 사용하고 같이 처리되는 경우가 드문 경우는 수직 분할을 고려

    - 수직 분할 고려시에는 분할되는 테이블이 하나의 트랜책션에 의해서 동시처리

      되는 경우나 조인이 빈번히 발생되는 경우는 없어야 한다

    - 주무일, 배송 일시, 계약일 등의 칼럼은 데이타 타입 사용을 자제한다

  

  2. 데이블과 데이블 스페이스(T.S)

   - 데이블은 T.S라는 논리적인 단위를 이용하여 관리되고 T.S는 물리적인

     데이터 파일을 지정하여 저장된다

   - 저장되는 내용에 따라 데이블용, 인덱스용, 임시용으로 구분하여 설계한다

   - 테이블스페이스는 데이타 용량을 관리하는 단위로 사용한다

   * 테이블용/인덱스용 T.S설계 유형들

   - 테이블이 저장되는 T.S는 업무별로 지정한다

   - 대용량 테이블은 독립적인 T.S를 지정한다

   - 데이블과 인덱스는 분리하여 저장한다

   - LOB 타입 데이터는 독립적인 공간을 지정한다

  

  3. 용량 설계(목적)

   - 저장공간의 효과적인 사용과 확장성을 보장하여 가용성을 높이기 위해

   - H/W 특성을 고려하여 디스크 채널 병목을 최소화 하기위해

   - 데이블이나 인덱스에 맞는 저장 옵션을 지정하기 위해

  

   * 데이블 저장 옵션에 대한 고려사항

   - 초기 사이즈, 중가 사이즈

   - 트랜잭션 관련 옵션

   - 최대 사이즈와 자동 증가

  

   *저장 용량 설계 절차

   - 용량분석 : 데이터 증가 예상건수, 주기, 로우길이등을 고려

   - Object 별 용량산정 : 데이블, 인덱스에 대한 크기

   - T.S별 용량 산정 : T.S Object 용량의 합

   - 디스크 용량 산정 : T.S에 따른 디스크 용량과 I/O 분산설계

     

 2절 무결성 설계

  1. 데이터 무결성

   - 데이터의 정확성, 일관성, 유효성, 신뢰성을 위해 무효 갱신으로부터 데이터를 보호하기

     위해서 무결성 설계가 필요하다

   - 프로그램과 데이터베이스 기능을 이용하여 처리할 수 있음

  

   . 데이터 무결성

    - 실체 무결성: 모든 실체는 식별자를 정의하고 그 식별자 값은 NULL이 아닌 유일한

                  값이어야 한다

    - 영역 무결성: 칼럼 데이터의 타입, 길이, 유효 값이 일관되게 유지 되어야 한다.

    - 참조 무결성: 데이터 모델에서 정의된 실체 간의 관계 조건을 유지하는 것

    - 사용자 무결성 : 비즈니스 규칙이 데이터적으로 일관성을 유지 하는것

  

   . 데이터 무결성 강화 방법

    1) 응용 프로그램 코드

     - 데이터를 조작하는 프로그램 내에 데이터 생성,수정,삭제시 무결성 조건을

       검증하는 코드를 추가함

     - 장점 : 사용자 정의 등 복잡한 무결성 조건을 구현함

       단점 : 관리의 어려움,개별적 실행으로 적정성 검토에 어려움

                    

    2) 데이터베이스트리거

     - 트리거 이벤트시 저장 SQL을 실행하여 무결성 조건을 실행

     - 장점 : 통합 관리가 가능, 복잡한 요건 구현 가능

       단점 : 운영 중 변경이 어려움, 사용상 주의가 필요함

      

    3) 제약 조건        

     - 데이터베이스 제약 조건 기능을 선언하여 무결성을 유지함

     - 장점 : 통합관리 가능, 간단한 선언으로 구현

              변경이 용이하고 유효/무료 변경이 가능, 원천적으로 잘못된 데이타 방지

       단점 : 복잡한 제약조건 구현 불가, 예외처리 불가

 

  2. 실체 무결성

   - 기본키 제약조건과 UNIQUE 제약조건을 이용하는 것이 바람직

   . 기본키 제약

    - 가장 중요한 무결성 조건

    - 식별자 값이 NOT NULL이면서 UNIQUE해야 한다.

   . UNIQUE  제약

    - 기본키 제약과 같으나  NULL 이 존재 가능함

   . 식별자 설계 - 채번

    - 대량의 트랜잭션 처리를 위해서는 식별자를 시퀀스나 오브젝트 시리얼을 이용

   

  3. 영역 무결성

   - 칼럼에 적용되어 단일 로우의 컬럼 값만으로 만족 여부를 판단할수 있다

   - 프로그램 소스와 제약 조건을 상호 보완적으로 사용하는 것이 효과적

   . 데이터 타입과 길이

    - 조회조건이나 비교연산에 사용하는 것은 문자 타입이 유리

   . 유효 값(CHECK)

   . NOT NULL

    - 금액 계산시 NULL 값이 존재하면 연산이 불가능하여 예외사항이 발생

      이를 위해 숫자 타입은 NOT NULL 제약조건을 부여하고 기본값을 0으로 한다

 

  4. 참조 무결성

   - 키 운영 규칙에 관한것

   - 키본키나 외래키 값이 입력, 삭제 및 수정될 때 데이터의 정합성을 유지

     하기 위한 방법

   - 프로그램, 데이타베이스, 외래키 제약을 사용함

   - 외래키 제약은 인덱스를 생성한다 

   - 외래키 제역을 편하가 확실하지만 성능상에 저하가 발생할수 있다

    

   . 입력 참조 무결성

    - DEPENDENT : 참조되는(부모) 테이블에 기본키 값이 존재할 때만 입력 허용

    - AUTOMATIC : 참조되는(부모) 데이블에 기본키 값이 없는 경우 생성 후 입력

    - DEFAULT   : 참조되는(부모) 데이블에 기본키 값이 없으면 기본값으로 입력

    - CUSTOMIZED: 특정 조건이 만족할 때만 입력 허용

    - NULL      : 참조되는(부모) 테이블에 기본키 값이 없는 경우 왜래키를 NULL로 처리

    - NO EFFECT : 조건 없이 입력 허용

    - 응용프로그램에서 구현 반드시 참조 무결성이 유지되어야 하는 경우는 FK 제약 사용

  

   . 수정 삭제 참조 무결성

    - RESTRICT  : 참조하는(자식) 테이블에 기본 값이 없는 경우 삭제/수정 허용

    - CASCADE   : 참조하는(자식) 테이블과 참조하는 데이블의 외래키를 연쇄적으로 삭제/수정

    - DEFAULT   : 참조되는(부모) 테이블의 수정을 항상 허용하고 참조하는(자식)

                  테이블의 외래키를 지정된 기본값으로 변경

    - CUSTOMIZED: 특정한 조건이 만족 할 때만 수정/삭제 허용

    - NULL      : 참조되는(부모) 테이블의 수정을 항상 허용하고 참조하는(자식)

                  테이블의 외래키를 NULL값으로 수정

    - NO EFFECT : 조건없이 삭제/수용 허용

    - 수정 무결성은 부모 식별자가 변경되었을 경우이다

    - 삭제 참조 무결성은 제한(RESTRICT) 기능을 DBMS가 외래키 제약을 이용한다.

  

   . DEFAULT 규칙 정의의 필요성

    - 참조 무결성  NULL값을 정의하는 것은 바람직하지 않다

   

   . 모델상에서 슈퍼 타입(Suber-type) - 서버타입(Sub-type) 관계

    - 삽입시에는 DEPENDENT, AUTOMATIC 조건을 적용

    - 삭제 변경시에는 CASCADE 조건을 적용

 

 3절 인덱스 설계

  1.인덱스 기능

   - 데이터 접근 경로를 단축시키는 기능을 한다

  2.인덱스 절차

   .접근경로 수집

    - 반복 수행되는 접근 경로 : 대표적인 것이 조인 컬럼

    - 분포도가 양호한 칼럼

    - 조회 조건에 사용된는 칼럼

    - 자주 결합되어 사용되는 칼럼

    - 데이터 정열 순서와 그룹핑 칼럼

    - 일련번호를 부여한 칼럼

    - 통계 자료 추출 조건

    - 조회 조건이나 조인 조건 연산자

   

   .부포도 조사에 의한 후보 칼럼 선정

    - 분포도(%) = 데이터별 평균 로우수 / 데이블의 총 로우수 X 10

    - 분포도가 10 ~ 15 정도이면 인덱스 칼럼 후보로 사용

    - 분포도 조사를 단일(복수) 칼럼을 대상으로 조사

    - 분포도 조사 결과를 만족하는 칼럼을 인덱스 후보로 선정

      인덱스 후보는 최소 조합으로 선별해야 한다

    - 분포도가 불규칙한 것은 별도 표시하여 접근 형태에 따라 대책 마련

    - 빈번히 변경이 발생하는 칼럼은 인덱스 후보에서 제외

       

   .접근경로 결정

   

   .칼럼 조합 및 순서 결정 (순차적으로 중요)

    - 항상 사용되는 칼럼을 선두 칼럼에 둔다

    - 등치 조건으로 사용되는 칼럼을 선행 칼럼으로 한다

    - 분포도가 좋은 칼럼을 선행 칼럼으로 한다

    - ORDER BY, GROUP BY 순서를 적용한다

  

   . 적용시험

 

  3. 인덱스 구조

   - B-Tree 인데스는 OLTP환경에서 사용

   - 비트맵은 데이터웨어하우스 등에서  B-Tree의 단점을 보완한 인덱스

                      B-Tree                            Bitmap

     ========================================================================

     구조 특징 :  Branched Block 균형유지   전체 row의 인덱스 칼럼 값을 0/1로 저장

     사용 환경 :  OLTP                      DW, Data Mart

     검색 속도 :  소량의 데이터를 검색       대량의 데이터를 검색

     분 포 도  :  데이터 분포도가 높음       데이터 분포도가 낮음

          :  입력,수정,삭제가 용이      OR 연산, NULL 값 비교 가능

          :  스캔 범위가 넓을때         전체 인덱스 부하로 입력,

                  렌덤 I/O 발생              수정,삭제가 어려움

  

 4절 분산 설계

  1. 분산 데이터베이스 개요

   - 논리적으로 연관된 데이터베이스의 집합체가 물리적으로 분산되어 운영되고 사용자들은

     하나의 데이터베이스처럼 놀리적으로 통하되어 공유되는 데이터 베이스를 뜻함

   - 장점 : 자신의 데이터를 지역적으로 제어하여 원격 데이터에 대한 의존도를 감소시키고

            단일 서버에서 불가능한 대용량 처리가 가능하며 기존 시스템에 서버를 추가하여

            점진적 증가가 용이하다

     단점 : 분산 처리에 의해 복잡도가 증가하여 소프트웨어 개발 비용이 증가하고

            통제 기능이 취야하고 분산 처리에 따른 오류 발생 가능성이 내제된다

 

  2. 분산 데이터베이스 설계

   - 여러 개의 물리적인 데이터베이스를 논리적으로 단일 데이터베이스 사용 환경을

     제공 하는 것이다

   - 분할 투명성 : 데이블은 수직, 수평 분할하여 처리

   - 위치 투명성 : 다른 위치 다른 저장소에 저장

   - 중복 투명성 : 데이터 일관성 유지는 시스템 차원에서 해결

   - 장해 투명성 : 구성 요소 장애에 무관한 트랜잭션의 원자성을 유지해야 한다

   - 병행 투명성 : 다수 트랜잭션의 원자성을 유지하기 위해서 2PC을 이용한다

 

  3.분산 설계 방식

   . 테이블 위치 분산

    - 테이블 구조 변경 없이 데이블을 서버별로 분산시키는 것

    - 테이블 마다 존재할 서버를 선정

   . 테이블 분할 분산

    - 데이블 데이터를 분할 하여 분산하는 것

    - 완전성 : 테이블의 모든 데이터를 대상으로 분할

    - 재구성 : 분할된 것은 관계 연산을 사용하여 원래의 전역 실체로 재구성이 가능해야 함

    - 상호 중첩 배제

      수평 분할은 모든 데이터가, 수직분할은 식별자를 제외한 데이터가 중복되지 않아야 한다

    1) 수평분할

     - 특정 칼럼 값을 기준으로 row를 분리하는 것

     - 분산된 테이블을 통합해도 식별자가 중복되지 않게 된다.

    2) 수직분할

     - 테이블 칼럼을 기준으로 분할 한다

   .데이터 복제 분산

     - 동일한 테이블을 복수 서버에 생성하는 분산

       데이터 복제는 실시간 처리의 필요성이 없는 경우 야간 일괄 복제 방식을 선택한다

     - 부분복제 / 광역복제

 

  4.데이터 통합

   - 분산 아키텍쳐의 단점을 보완하고 정보의 직시성과 실시간 데이터 교환이라는

     목적으로 통합 아키텍쳐를 구축한다

   - DW, EAI를 이용

    

 5절 보안 설계

  - DB 정보가 비 인가된자에 의해서 노출, 변조, 파괴 되는 것을 막는 것

  - 지원에 접근하는 사용자 식별 : 사용자, 비밀번호, 사용자 그룹

  - 보안 규칙 또는 권한 규칙에 대한 정의

  - 사용자에 접근 요청에 대한 보안 규칙 검사 구현 : 보안 관리 시스템 구현

  1. 사용자 식별 및 인증

  2. 접근 통제

   - 사용자 접근 통제

     신분, 역할, 위치, 시간, 서비스 제한

   - 사용자 통제

     패스워드, 암호화, 접근 통제 목록 적용, 제한된 사용자 인터페이스, 보안등급

  3. 감사추적

   - 응용 프로그램 및 사용자 활동에 대한 일련의 기록을 실시

   - 감사추적의 내용은 사용자 실행 프로그램, 사용 클라이언트, 사용자, 날짜 및 시간

     접근 한 데이터, 이전 값 및 이후값을 저장함

 

  4.데이터 접근 통제 모델

   - 주체, 객체, 규칙을 정의하고 그들 간의 관계를 정의하여 접근을 통제함

 

  5. 데이터 접근 제어 유형

   - 값 비종속 규칙

     보안의 대상을 객체로 보고 객체에 대한 인스턴스는 고려하지 않는 방법이다

    

   - 값 종속 규칙

     사원평가 데이블에 대한 접근은 사용자의 소속 부서 사원의 데이터만 접근을

     허용하는 것과 같다

    

   - 의미 종속 규칙      

     업무 시간대인 월요일에서 금요일 까지 시간데에만 데이터 접근 허용

    

  6. 데이터 접근 제어 기법

   - 임의 통제

     사용자는 각 데이터 객체에 대해 서로 다른 권리들을 갖고 각 사용자의

     개인적인 판단에 따라 권한을 이전

     수평전파 : 1개 사용자에게 권한을 이전

     수직전파 : 권한 부여의 깊이를 제한하지 않는 것

    

   - 강제 통제

     각 데이터 객체에 보안 분류 등급이 부여되고 각 사용자마다 인가 등급을

     부여하여 통제하는 것

     읽기 : 사용자 등급이 접근하는 객체의 등급과 같거나 높은 경우

     수정/등록 : 사용자와 객체의 등급이 같은 경우

      

  

 

 

2장 데이터베이스 응용

 1절 데이터베이스 관리 시스템(DBMS)

  1. 개념적 데이터베이스 관리 시스템 아키텍쳐

   - DBMS 서버는 인스턴스와 데이터베이스로 구성된다

   - 인스턴스는 메모리 부분과 프로세스 부문으로 구성

     그외 DB의 기동과 종료를 위하여 DBMS 환경 매개변수 파일과

     파일 목록(데이터파일, 로그파일)을 기록하는 제어파일이 있다

 

  2. DB 서버의 시작과 종료

   - DB 사용을 위해서는 DB관리자가 DBMS 매개변수 파일을 읽어 인스턴스를 시작 한다

   - 매개변수파일 : 인스턴스와 DB에 대한 구성 매개변수의 목록이 있는 TEXT 파일

                   인스턴스 구성 매개변수를 특정값으로 설정하여 인스턴스의

                   메모리와 프로세스를 초기화 한다     

  

   . 데이터베이스 서버 시작

    1) 인스턴스 시작

     - 매개변수 파일 읽기 -> 초기화 메모리변수값을 결정하고 데이터베이스

       정보를 위해 사용되는 메모리 공유 영역을 할당 -> 백그라운드 프로세스 생성

    2) 데이터베이스 마운트

     - 인스턴스가 DB를 마운트 하고 제어파일과 데이터 파일을 읽어 들인다.

     - DB는 여전히 닫힌 상태로 관리자만 접근가능   

    3) 데이터베이스 열기

     - 일반 DB 사용가능

     - 자동복구작업

     - 미확정 분산 트랜잭션 해결

     - 읽기 전용 모드에서 보수 작업

    

   . 데이터베이스 서버 종료

    1) 데이터베이스 닫기

     - 데이터베이스를 닫으면 메모리에 있는 데이터베이스 데이터와 로그를 데이터 파일과

       리두 로그 파일에 각각 기록 -> 온라인 데이터 파일과 로그 파일 닫기

     - 제어 파일을 열려 있는 상태임

    2) 마운트 해제

     - 제어 파일 닫기

    3) 인스턴스 종료

     - 인스턴스를 할당된 메모리에서 제거 -> 백그라운트 프로세스 종료

    

  3. 데이터 베이스 구조

   . 데이터 사전

    - 데이터베이스의 정보를 제공하는 읽기 전용 테이블 또는 VIEW 집합

    - 데이터베이스의 모든 스키마 객체 정보

    - 스키마 객체에 대해 할당된 영역의 상이즈와 현재 사용 중인 영역의 사이즈

    - 열에 대한 기본값

    - 무결성 제약 조건에 대한 정보

    - 사용자 이름, 사용자에게 부여된 권한과 규칙

    - 기타 일반적인 데이터베이스 정보

   

    - 동적 성능 테이블 : 세션, 잠금, SQL pool 등 다양한 정보를 제공함

  

   . 데이터베이스, 데이블스페이스 데이터 파일

  

   . 데이터 블록, 확장 영역 및 세그멘트 간의 관계

    - 데이터베이스 영역의 할당 단위

    1) 데이터 블록

     - DBMS가 데이터를 읽는 가장 작은 단위

     - 1회 물리저인 디스크 I/O량을 결정함

     - Header : 블록 주소와 세그멘트유형(데이터, 인덱스) 정보..

       Row directory : 행 데이터 영역에 있는 각 행 조각의 주소를 포함하여 블록에

                       있는 실제행에 대한 정보

       Free space : 새로운 행을 삽입하거나 후행 널을 널이 아닌 값으로 갱신할때와

                    같이 추가 영역이 필요한 행을 갱신할때 할당

       Row Data :  실제적인 데이터가 저장된 공간

    2) 데이터 확장 영역

     - 특정 유형의 정보를 저장히기 위해 할당된 몇개의 연속적인 데이터 블록

     - 생성된 오브잭트를 Drop하거나 Truncate해야 데이블스페이스로 반환된다

    3) 세그먼트

     - 특정 논리적 저장 영역 구조에 대한 모든 데이터를 포함하는 확정 영역 집합

 

  4. 메모리 구조

   1) DBMS 정보 저장

    - 실행된는 프로그램 코드

    - 현재 사용하지 않더라도 접속되어 있는 세션 정보

    - 프로그램 실행 동안 필요한 정보

    - 프로세스 간에 공유하거나 교환 정보

    - 보조 메모리에 영구적으로 저장된 캐시 데이터

   

    - DBMS는 소프트웨어 코드 영역, 시스템 메모리 영역, 프로그램 영역으로 구분

      시스템 메모리 영역 = 데이터베이스 버퍼 + 로그 버퍼

   

   2) 데이터베이스 버퍼

    - 인스턴스에 동시에 접속한 모든 사용자 프로세스는 데이터베이스 버퍼에 대한

      액세스를 공유한다  

    - 더티(Dirty)목록과 LRU(Least Recently Used)목록을 가지고 있다.

    - 더티목록은 더티버퍼(수정되었지만 아직 디스크에 기록되니 않은 버퍼)를 갖고 있음

    - LRU는 빈버퍼, 현재 엑서스 중인 고정된 버퍼, 더티목록을 갖고 있음

   

   3) 로그 버퍼

    - DB의 변경 사항 정보를 유지하는 것으로 원형 버퍼임

    - 서버 프로세스에 의해 로그파일에 작성된다

  

   4) 공유 풀

    - 라이브러리 캐시, 딕셔너리 개시, 저어 구조 등으로 구성됨

    - 라이브러리 캐시 : SQL 영역, 저장 프로시저 영역, 제어 구조 등을 공유함

    - 딕셔널리 캐시  : 데이터 딕셔널리 정보를 공유한다

    - 공유 풀 :

   

   5) 정렬 영역

    - 정렬되어야 한는 데이터의 양이 메모리 영역을 초과할 때는 데이터를 작은 부분으로

      나눈 후 각 부분을 개별적으로 정렬하고 개별적으로 정렬된 결과는 병합하여

      최종 결과를 생성한다

 

  5. 프로세스 구조

  

   . 사용자 프로세스     

    - 응용 프로그램이나 DB도구를 실행 할 때 생성된다

  

   . 서버 프로세스

    - 사용자 프로세스와 통신을 하는 역할

    - 다중 쓰레드 방식과 단일 쓰레드 방식이 있음

    - 다중 쓰레드 방식은 단일 서버 프로세스를 여러 사용자 세션간에 공유

      단일 쓰레드 방식은 각 사용자에 세션에 대해 서버 프로세스를 생성한다

     

   . 백그라운드 프로세스

    - Process Monitory(PMON)

    - System Monitory (SMON)

    - Database Writes (DBWn)

    - checkpoint(CKPT)

    - Log Writer(LGWR)  

   

 

 2절 데이터 액세스

  1. 실행구조

   - 사용자 요청(SQL) -> 네트웍크 서비스 -> DB 인스턴스 (엔진) -> 문법 오류, 확인

     -> Optimizer (실행계획) 선정 -> 실행계획에 따라 DB엔진은 실행 과정 반복

     -> 사용자에게 전달될 DATA 있는 경우 -> 네트워크 서비스 -> Buffer 만큼 전달

  

   . 옵티마이져

    - SQL은 사용자가 DB에서 자신이 원하는 데이터(What)만 정의 하고 그 데이터를

      어떻게(How) 구하는가는 DBMS가 자동으로 결정해서 처리함

    - 비용 기준 최적화 :

      규칙 기준 최적화 : 일정한 엑서느 방법에 따라 정해진 우선 순위로 실행 계획을 작성

 

   . SQL 실행단계

    1) 파싱

     - SQL은 구문과 의미 검사 / 참조된 테이블의 접근 권하여부 확인.

     - 파싱트리 형태로 변형되어 옵티마이저에게 넘겨짐

    2) 옵티마이저 단계

     - 파싱 트리를 이용해서 최적의 실행 경로를 고른다

    3) 로우 소스 생성 단계

     - 옵티마이저에게 넘겨받은 실행 계획을 내부적으로 처리하는 자세한 방법을 생성

     - 테이블 엑세스 방법, 조인 방법, 정렬 등을 위한 다양한 로우소스가 제공됨

    4) SQL 실행

     - 생성된 로우 소스를 SQL 수행 엔진에서 수행해서 결과를 돌려줌

    

    - 소프트 파싱 : 최적화를 한번 수해한 SQL 질의에 대해 옵치마이저 단계와

                   로우소스 생성 단계를 생략 하는것

    - 하드 파싱 : 전체 단계를 수행

  

   2.명령어

    . 데이터 정의 언어(DDL, Data Definition Language)

     - 스키마 오브젝트를 생성, 구조 변경, 삭제, 명칭 변경하는데 사용

     - DDL 실행은 현재 진행되는 트랜젝션에 대해서 암시적으로 COMMIT을 실행

    . 데이터 조작 언어(DML, Data Manipulation Language)

     * DML 처리 단계

     - 1단계 커서 생성

     - 2단계 명령문 구문 부석

     - 3단계 질의 결과 설명     (select 일때)

     - 4단계 질의 결과 출력정의 (select 일때)

     - 5단계 변수 바인드

     - 6단계 명령문 병렬화 (병렬처리일 때)

     - 7단계 명령문 실행

     - 8단계 질의 로우 인출 (select 일때)

     - 9단계 커서 닫기

    . 제어 명령문(Control Statement)

     - 트렌젝션 제어문 : 1개 이상의 SQL 문장을 논리적으로 하나의 처리 단위로

                        적용하기 위해서 사용하는 명령어 이다.(COMMIT, ROLLBACK)

     - 세션 제어문 : 실행하고 저장 프로시저 문에는 사용할 수 없으며 사용자

                    세션의 특성을 정의하는 명령어이다

     - 시스템 제어문 : 시스템이나 DB 레벨에서 재기동 없이 환