Certificates/SQLD

1-2. 데이터 모델과 성능

도돔 2023. 6. 7. 01:28

1. 성능 데이터 모델링의 개요

성능 데이터 모델링

DB 성능향상을 위한 사항이 데이터 모델링에 반영되도록 하는 것

 

분석/설계 단계

성능 데이터 모델링 시점이 늦어질수록 재업무 비용이 증가함

 

성능 데이터 모델링 고려 사항 순서

  1. 정규화 수행 ← 필수!!
  2. DB 용량 산정
  3. 트랜잭션 유형 파악
  4. DB 용량(2번), 트랜잭션 유형(3번)에 따라 반정규화
  5. PK/FK 조정, 슈퍼타입/서브타입 조정
  6. 성능관점에서 데이터모델 검증

 

 

 


2. 정규화와 성능

정규화(Normalization)

  • 데이터 모델을 좀 더 구조화하고 개선시키는 절차
  • 중복 제거, 무결성을 지킴
  • 성능은 “ 조회 ” // “ 삽입, 수정, 삭제 ”의 두 가지 측면 둘 다 고려해야 함
  • 일반적으로 정규화가 잘되어있으면 삽입/수정/삭제의 성능이 향상되고 반정규화를 많이 하면 조회의 성능이 향상된다

 

함수적 종속성 (FD; Functional Dependency)

결정자와 종속자의 관계, 결정자의 값으로 종속자의 값을 알 수 있음 → 함수적 종속성에 근거한 정규화 수행 필요!

 

정규화와 성능

정규화는 입출력 데이터의 양을 줄여 성능을 향상시킴

 

 

 


3. 반정규화와 성능

반정규화(Denormalization)

데이터 중복을 허용하여 조인을 줄이는 DB 성능 향상 방법, 데이터의 무결성을 희생하고 조회 성능 향상

 

반정규화 적용 방법

① 반정규화 대상 조사 : 데이터 처리 범위 및 통계성 등 조사

② 다른 방법 검토 : View 테이블, 클러스터링, 인덱스 조정, 응용 애플리케이션

③ 반정규화 적용 : 정규화 수행 후 반정규화 수행

 

정규화 과정

 

정규화 절차 설명
1차 정규화 속성의 중복값 제거
2차 정규화 기본키가 2개 이상의 속성으로 이루어졌을 때 부분 함수 종속성을 제거
복합 인스턴스에 대해 각 인스턴스의 종속적 중복 삭제
3차 정규화 기본키를 제외한 칼럼간의 종속성을 제거
일반 속성의 종속성을 제거
4차 정규화 여러 칼럼들이 하나의 칼럼을 종속시키는 경우 분해하여 다중값 종속성 제거
5차 정규화 조인에 의해서 종속성이 발생되는 경우 분해

 

반정규화 기법

  • 테이블 반정규화
    • 테이블 병합 (1:1관계, 1:M관계, 슈퍼/서브타입)
    • 테이블 분할 (수직분할, 수평분할)
    • 테이블 추가 (중복, 통계, 이력, 부분 테이블 추가)
  • 칼럼 반정규화
    • 중복 칼럼 추가(조인 감소)
    • 파생 칼럼 추가(필요한 값 미리 계산한 칼럼 추가)
    • 이력 테이블 칼럼 추가
    • PK에 의한 칼럼 추가(PK의 종속자를 일반속성으로 생성)
    • 응용 시스템의 오작동을 위한 칼럼 추가
  • 관계 반정규화 : 중복 관계 추가 (데이터 무결성 보장 가능)

 

 

 


4. 대량 데이터에 따른 성능

대량 데이터 발생으로 인한 현상

로우 체이닝(Row Chaining)

행 길이가 너무 길어 여러 블록에 걸쳐 저장되는 현상 → 1:1로 테이블을 분리해라!

 

로우 마이그레이션(Row Migration)

수정된 데이터가 해당 블록이 아닌 다른 블록의 빈 공간에 저장되는 현상

 

테이블 분할(반정규화 기법)

  • 수직분할 : 칼럼 단위로 테이블을 분할하여 I/O를 감소시킴, 너무 많은 수의 칼럼이 있는 경우 사용
  • 수평분할 : 행 단위로 테이블을 분할하여 I/O를 감소시킴
  • 수직/수평 분할 절차 : 데이터 모델을 먼저 완성 → DB 용량 산정 → 대량 데이터가 처리되는 테이블에 대해 트랜잭션 처리 패턴 분석 → 칼럼 or 로우 단위로 집중화된 처리가 발생하는지 분석해 테이블 분리

 

파티셔닝(Partitioning)

테이블 수평분할 기법, 논리적으로는 하나의 테이블이지만 물리적으로 여러 데이터 파일에 분산 저장, 데이터 조회 범위를 줄여 성능 향상

  • Range Partition : 데이터 값의 범위를 기준으로 분할
  • List Partition : 특정한 값을 기준으로 분할
  • Hash Partition : 해시 함수를 적용하여 분할, DBMS가 알아서 분할 관리, 데이터 위치를 알 수 없음
728x90
반응형

'Certificates > SQLD' 카테고리의 다른 글

2-3. SQL 최적화 기본원리  (0) 2023.06.09
2-2. SQL 활용  (0) 2023.06.09
2-1. SQL 기본  (0) 2023.06.09
1-1. 데이터 모델링의 이해  (0) 2023.05.30