1. 슈퍼타입/서브타입
    모델의
    성능고려
    방법

    . 슈퍼/서브타입
    데이터
    모델의
    개요

  • Extended ER모델이라고
    부르는
    슈퍼/서브타입
    데이터
    모델은
    최근에
    데이터
    모델링을


    자주
    쓰이는
    모델링
    방법
  • 자주
    쓰이는
    이유는
    업무를
    구성하는
    데이터의
    특징을
    공통과
    차이점의
    특징을
    고려하여
    효과적으로
    표현할

    있기
    때문
  • 공통의
    부분을
    슈퍼타입으로
    모델링하고
    공통으로부터
    상속받아
    다른
    엔티티와
    차이가
    있는
    속성에
    대해서는
    별도의
    서브엔티티로
    구분하여
    업무의
    모습을
    정확하게
    표현하면서
    물리적인
    데이터
    모델로
    변환을


    선택의
    폭을
    넓힐

    있는
    장점이
    있음.
  • 슈퍼/서브타입의
    경우
    논리적인
    데이터
    모델에서
    이용되는
    형태이고, 분석단계에서
    많이
    쓰이는
    모델이다. 따라서
    물리적인
    데이터
    모델을
    설계하는
    단계에서는
    슈퍼/서브타입
    데이터
    모델을
    일정한
    기준에
    의해
    변환해야
    한다.
  • 변환하는
    과정에서
    막연하게 1:1
    변환하거나
    아니면
    하나의
    테이블로
    구성해
    버리는
    경우
    성능이
    저하되는
    경우가
    생길

    있다.

     
     

    . 슈퍼/서브타입
    데이터
    모델의
    변환

  1. 트랜잭션은
    항상
    일괄로
    처리하는데
    테이블은
    개별로
    유지되어 Union연산에
    의해
    성능이
    저하될

    있다.
  2. 트랜잭션은
    항상
    서브타입
    개별로
    처리하는데
    테이블은
    하나로
    통합되어
    있어
    불필요하게
    많은
    양의
    데이터가
    집약되어
    있어
    성능이
    저하되는
    경우가
    있다.
  3. 트랜잭션은
    항상
    슈퍼+서브
    타입을
    공통으로
    처리하는데
    개별로
    유지되어
    있거나
    하나의
    테이블로
    집약되어
    있어
    성능이
    저하되는
    경우가
    있다.

 
 

  • 해당
    테이블에
    발생되는
    성능이
    중요한
    트랜잭션이
    빈번하게
    처리되는
    기준에
    따라
    테이블을
    설계해야
    이러한
    성능저하
    현상을
    예방할

    있음을
    기억해야
    한다.

     
     

    . 슈퍼/서브
    타입
    데이터
    모델의
    변환기술

  1. 개별로
    발생되는
    트랜잭션에
    대해서는
    개별
    테이블로
    구성
  2. 슈퍼타입+서브타입에
    대해
    발생되는
    트랜잭션에
    대해서는
    슈퍼타입+서브타입
    테이블로
    구성
  3. 전체를
    하나로
    묶어
    트랜잭션이
    발생할
    때는
    하나의
    테이블로
    구성

 
 

. 슈퍼/서브타입
데이터
모델의
변환타입
비교

 
 

  1. 인덱스
    특성을
    고려한 PK/FK 데이터베이스
    성능향상

    . PK/FK 컬럼
    순서와
    성능개요

  • 데이터를
    조회할

    가장
    효과적으로
    처리될

    있도록
    접근경로를
    제공하는
    오브젝트가
    바로
    인덱스이다
  • 일반적으로
    데이터베이스
    테이블에서는 B*Tree구조를
    많이
    사용한다.

  • 성능저하
    현상이
    많은
    부분이 PK
    여러
    개의
    속성으로
    구성된
    복합식별자

    PK순서에
    대해
    별로
    고려하지
    않고
    데이터
    모델링을

    경우에
    해당된다.
  • 스스로
    생성된 PK순서
    이외에
    다른
    엔티티로부터
    상속받아
    발생되는 PK순서까지
    항상
    주의하여
    표시하도록
    해야함
  • PK
    해당
    테이블의
    데이터를
    접근할
    가장
    빈번하게
    사용되는
    유일한
    인덱스(Unique Index)
    모두
    자동
    생성한다.
  • 여러
    개의
    속성이
    하나의
    인덱스로
    구성되어
    있을

    앞쪽에
    위치한
    속성의
    값이
    비교자로
    있어야
    인덱스가
    좋은
    효율을
    나타낼

    있다.
  • 앞쪽에
    위치한
    속성값이
    가급적 ‘=’ 아니면
    최소한
    범위 ‘BETWEEN’ ‘<>’
    들어와야
    인덱스를
    이용할

    있다.
  • FK
    데이터를
    조회할

    조인의
    경로를
    제공하는
    역할을
    수행하므로 FK
    대해서는
    반드시
    인덱스를
    생성하도록
    하고
    인덱스
    컬럼의
    순서도
    조회의
    조건을
    고려하여
    접근이
    가장
    효율적인
    컬럼
    순서대로
    인덱스를
    생성하도록
    한다.

     
     

    . PK컬럼의
    순서를
    조정하지
    않으면
    성능이
    저하되는
    이유

  • PK
    순서를
    인덱스
    특징에
    맞게
    고려하지
    않고
    바로
    그대로
    생성하게
    되면, 테이블에
    접근하는
    트랜잭션의
    특징에
    효율적이지
    않은
    인덱스가
    생성되어
    있으므로
    인덱스의
    범위를
    넓게
    이용하거나 Full Scan
    유발하게
    되어
    성능이
    저하된다.

     
     

    . PK순서를
    잘못
    지정하여
    성능이
    저하된
    경우간단한
    오류

     
     

     
     


  • 내용과
    같이
    빈번하게 where절에
    들어오는
    컬럼
    순서로 PK 순서를
    정해주는
    것이
    좋다.

     
     

    . PK순서를
    잘못
    지정하여
    성능이
    저하된
    경우복잡한
    오류

  • Where 조건절의
    경우
    사무소코드는 ‘=’
    들어오고
    거래일자에
    대해서는 ‘BETWWEN’ 조회를
    하고
    있다. 이때 SQL
    정상적으로
    인덱스를
    이용할

    있지만
    인덱스
    효율이
    떨어져
    성능이
    저하되는
    경우에
    해당된다.

  • 범위조회에
    따른
    성능저하

    성능향상이
    발생될

    있기
    때문에 PK
    순서는
    중요하다.
  • 인덱스순서를
    고려하여 PK순서를
    거래일자+사무소코드+출급기번호+명세표번호
    에서
  • 사무소코드+거래일자+출급기번호+명세표번호로
    수정하여
    성능을
    개선할

    있다.

 
 

  1. 물리적인
    테이블에 FK제약이
    걸려있지
    않을
    경우
    인덱스
    미생성으로
    성능저하
  • 물리적인
    테이블에 FK
    사용하지
    않아도
    데이터
    모델
    관계에
    의해
    상속받은 FK속성들은 SQL WHERE 절에서
    조인으로
    이용되는
    경우가
    많이
    있으므로 FK 인덱스를
    생성해야
    성능이
    좋은
    경우가
    빈번하다.

     
     

     
     

  • 학사기준번호가 WHERE 절에
    오진
    않았지만, 학사기준과
    수강신청의
    조인으로
    인하여 Full Table Scan
    발생
  • 아래와
    같이 FK
    인덱스를
    생성해줌으로서
    성능향상을
    기대할

    있음

     
     

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다