SQL-D 기출 초토화: 데이터 모델과 성능(1)

0
post-thumbnail

성능 데이터 모델링이란?

  • 데이터베이스 성능 향상을 목적으로 한다

  • 데이터모델링의 설계 단계부터 성능과 관련된 사항이 모델링에 반영될 수 있도록 하는 것이다

  • 문제 발생 시점의 SQL을 중심으로 집중 튜닝하는 것은 성능 데이터모델링과는 무관하다

성능이 저하된 결과를 대상으로 데이터모델보다는 문제 발생 시점의 SQL을 중심으로 집중하여 튜닝한다.(X)

성능 데이터모델링과는 무관한 내용이다


반정규화(역정규화)

특징 및 순서

  1. 데이터모델링을 할 때 정규화를 정확히 수행
  2. 데이터베이스 용량 산정을 수행
  3. 데이터베이스에 발생되는 트랜잭션의 유형 파악
  4. 용량과 트랜잭션의 유형에 따라 반정규화를 수행
  5. 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행
  6. 성능 관점에서 데이터모델을 검증

성능 데이터 모델링 시 고려사항은?

  • 용량산정
    전체적인 데이터베이스에 발생되는 트랜잭션의 유형과 양을 분석하는 자료가 된다
    모델링을 할 때 중요한 작업이 될 수 있다

  • PK/FK의 칼럼 순서 조정 & FK 인덱스 생성
    물리적인 데이터 모델링 시 성능 향상을 위한 데이터모델링 작업에 중요한 요소가 된다

  • 이력데이터는 시간에 따라 반복적으로 발생된다
    따라서 대량의 데이터일 가능성이 높으므로, 특별히 성능을 고려하여 칼럼 등을 추가적으로 설계해야 한다

데이터 모델링의 정규화는 항상 조회 성능 저하를 나타내므로 반드시 반정규화 관점에서만 성능을 고려하여 설계하도록 한다.(X)

정규화가 항상 조회 성능을 저하시크는 것은 아니며, 기본적으로 중복된 데이터를 제거함으로써 조회 성능을 향상시킬 수 있다


정규화

반복적인 데이터를 분리한다
각 데이터가 종속된 테이블에 적절하게 배치되도록한다

  • 1차 정규화
    같은 성격 및 내용의 컬럼을 제거 / 테이블 생성

  • 2차 정규화
    PK 복합 구성일 떄 부분적 함수 종속 관계 테이블 분리

  • 3차 정규화
    PK가 아닌 컬럼에 의존하는 컬럼 분리

속성 x의 각 값에 대해, 시간에 관계 없이 항상 속성 y의 값이 오직 하나만 연관되어 있다면
y는 x에 함수종속이며 x -> y로 표현한다
이 때, x는 결정자 y는 종속자가 된다

예를 들어
학번 -> 학생
학번 -> 학년
학번 -> 학과

하나의 학번에 대해, 그 학번에 해당하는 이름 • 학년 • 학과는 단 하나뿐이다


함수 종속성

데이터들이 어떤 기준 값에 의해 종속되는 현상을 말한다.
기출문제에선 ERD와 함께 몇 차 정규화가 필요한지, 스키마 구조는 어떠한지를 묻는 문제가 주를 이룬다.

>🙅🏻‍♂️ 아래는 문제를 풀기 위한 요령이며 정확하지 않다
>풀이만이 간절하며 한 문제 정도는 괜찮다 사람들을 위해

간단하게,
X -> y1, y2, y3 일 떄
- x는 하나이고 y는 여러 개이므로 '2차 정규화'가 필요하며
이 때 스키마의 구조는
정규화 테이블{X, y1, y2, y3 ...(그 외 포함)}이 된다

X1, X2 -> y1, y2 일 때라면
- x의 값과 y의 값이 복수이므로 '1차 정규화'가 필요하며
이 때 스키마의 구조는
정규화 테이블{X1, X2, y1, y2 ... (그 외 포함)}이 된다

0개의 댓글