SQL/SQLD

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

유달잇 2021. 5. 19. 16:04
728x90

 

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


 

성능 데이터 모델링 이란?


데이터베이스 성능 향상을 위한 목적으로 설계단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것이다.

주로 데이터 모델 구조, 대용량의 데이터, 인덱스의 특성을 고려한다.

사전에 수행할수록 비용절감이 가능하다.

 

 

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


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

 

 

2. 정규화와 성능


 

정규화(Normalization) 란?


다양한 유형의 검사를 통해 데이터 모델을 더 구조화하고 개선시켜 나가는 절차이다.

중복성 제거, 관심사별로 처리 등 데이터베이스의 성능을 향상할 수 있다.

 

  • 1차 정규화: 속성의 원자성 확보, 다중값 속성을 분리
  • 2차 정규화: 부분 함수 종속성 제거, 일부 기본키에만 종속된 속성을 분리, 기본키가 하나의 칼럼일 때 생략 가능
  • 3차 정규화: 이행 함수 종속성 제거, 서로 종속관계가 있는 일반 속성을 분리, 주식별자와 관련성이 가장 낮음
  • 보이스코드 정규화(BCNF: Boyce-Codd Normal Form): 후보키가 기본키 속성 중 일부에 함수적 종속일 때 다수의 주식별자를 분리
  • 4차, 5차 정규화 : 다치 종속 분리, 결합 종속 분리

 

 

정규화를 통한 성능 향상 요소


  • 입력/수정/삭제 시 성능은 항상 향상
  • 유연성 증가 : High Cohesion & Loose Coupling 원칙에 충실
  • 개념 세분화를 통한 재활용 가능성 증가
  • 데이터 중복 최소화

 

 

정규화를 통한 성능 저하 요소


조회 시 처리 조건에 따라 성능 저하가 발생할 수도 있다.

대표적으로 Join을 유발하여 CPU와 메모리를 많이 사용하게 된다.

< Solution >

  • 반정규화를 통해 문제 해결 가능
  • 인덱스를 사용하여 join 연산 수행하면 인덱스의 수를 줄일 수 있음

 

 

3. 반정규화와 성능


 

반정규화 란?


데이터 중복을 허용하여 조인을 줄이는 데이터베이스 성능 향상 방법으로,

정규화된 엔터티, 속성, 관계에 대해 시스템 성능 향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법이다.

데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 반정규화를 적용하여 입출력 성능을 향상시킨다.

 

 

테이블의 반정규화


1. 테이블 병합

  • 1:1 관계 테이블 병합
  • 1:M 관계 테이블 병합
  • 슈퍼/서브타입 테이블 병합

2. 테이블 분할

  • 수직분할
    • 칼럼 단위, 테이블 1:1로 분리
  • 수평분할
    • 로우 단위로 분리

3. 테이블 추가

  • 중복테이블 추가
    • 업무나 서버가 다를 때 중복 테이블 생성 (원격조인 제거)
  • 통계테이블 추가
    • SUM, AVG 등 미리 계산하여 조회시 성능 향상
  • 이력테이블 추가
  • 부분테이블 추가
    • 자주 이용하는 칼럼들을 모아 별도 테이블 생성

 

 

칼럼의 반정규화


1. 중복칼럼 추가

  • 중복 칼럼 위치 -> 조인 감소

2. 파생칼럼 추가

  • 필요한 값 미리 계산하여 칼럼 추가 -> 계산에 의한 성능저하 예방

3. 이력테이블 칼럼추가

  • 기능성 칼럼 (최근값 여부, 시작 및 종료일자 등) 추가

4. PK에 의한 칼럼 추가

  • 일반 속성으로 PK데이터 추가

5. 응용시스템 오작동을 위한 칼럼 추가

  • 이전 데이터 임시적 중복 보관

 

 

관계의 반정규화


 중복 관계 추가

  • Join 방지
  • 데이터의 무결성 보장
  • 데이터 처리 성능 향상

 

 

 

 

 

728x90

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

[SQLD] 2-2. SQL 활용 (2)  (3) 2021.05.26
[SQLD] 2-2. SQL 활용  (2) 2021.05.25
[SQLD] 2-1. SQL 기본 (2)  (0) 2021.05.24
[SQLD] 2-1. SQL 기본  (1) 2021.05.23
[SQLD] 1-1. 데이터 모델링의 이해  (1) 2021.05.18
댓글
250x250
최근에 올라온 글
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Total
Today
Yesterday