본문 바로가기
데이터 분석

[SQLD] 개념정리 - 데이터 모델과 성능(1): 성능 데이터 모델링, 정규화, 반정규화

by pm-ing 2023. 9. 3.

✅성능 데이터 모델링이란?

데이터베이스 성능향상을 목적으로 설계단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블 통합, 테이블 분할, 조인구조, PK, FK, 등 성능과 관련된 여러 사항이 데이터 모델링에 반영될 수 있도록 하는 것.

 

✅성능 데이터 모델링 수행 시점

분석/설계 -> 구현 -> 테스트 -> 운영

: 사전에 할수록 비용 적음

: 분석/설계 단계에서 DB 처리 성능을 향상시킬 수 있는 방법을 주도면밀하게 고려해야 함

 

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

1) 정규화를 정확하게 수행

2) 데이터베이스 용량 산정을 수행

3) 데이터베이스에서 발생되는 트랜잭션의 유형을 파악

4) 용량과 트랜잭션의 유형에 따라 반정규화를 수행

5) 이력 모델의 조정, PK/FK 조정, 슈퍼 타입/서브타입 조정을 수행

6) 성능관점에서 데이터 모델을 검증

 


✅정규화와 성능 향상 전략

: 데이터의 중복 속성을 제거하고, 동일한 의미의 일반 속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다.

: 정규화된 테이블은 속도가 빨라질 수도, 느려질 수도 있음

(조회는 처리 조건에 따라 성능 향상 or 저하 / 입력,수정,삭제는 무조건 성능이 향상됨)

 

✅정규화 용어

- 정규화: 관계형 DB 테이블의 삽입/삭제/갱신 이상 현상 발생을 최소화하기 위해 좀 더 작은 단위의 테이블로 설계하는 과정. 즉, 데이터 모델을 정규형에 맞도록 고치는 과정

- 정규형: 정규화 규정. 정규화 결과에 의해 도출된 데이터 모델이 갖춰야 할 특성

- 함수적 종속성: 테이블의 특정 컬럼A의 값을 알면 다른 컬럼 B 값을 알 수 있을 때, 컬럼 B는 컬럼A에 함수적 종속성이 있다고 함

- 결정자: 함수적 종속성 설명에서 컬럼 A를 결정자라고 함.

 

✅정규화 이론

1) 1차 정규화

: 함수종속, 복수의 속성값을 갖는 속성을 분리, 속성의 원자성 확보

-> 모든 속성은 원자 값을 가져야 함

-> 다중 값을 가질 수 있는 속성은 분리되어야 함

 

2) 2차 정규화

: 함수종속, 주식별자에 완전종속적이지 않은 속성의 분리

-> 제 1정규형을 만족하는 상태에서 모든 Non-key 컬럼은 기본 키 전체에 종속되어야 함

-> 기본 키에 종속적이지 않거나 기본 키 일부 컬럼에만 종속적인 컬럼은 분리되어야 함.

 

3) 3차 정규화

: 함수종속, 일반속성에 종속적인 속성의 분리 / 이전종속 속성을 분리

-> 제 2정규형을 만족하는 상태에서 일반속성들간에도 종속관계가 존재하지 않아야 함

-> 일반속성들 간 종속관계가 존재하는 것들은 분리되어야 함

 

✅반정규화와 성능

: 협의의 반정규화는 데이터를 중복하여 성능을 향상시키기 위한 기법.

: 더 넓은 의미의 반정규화는 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정을 의미

: 데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는 데이터를 조회할 때 디스크 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상되거나 칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 반정규화를 수행함

 

✅반정규화 기법

1) 테이블 반정규화

기법분류 기법 내용
테이블 병합 1:1 관계 테이블 병합 1:1 관계를 통합하여 성능향상
1:M 관계 테이블 병합 1:M 관계를 통합하여 성능향상
슈퍼/서브타입 테이블 병합 슈퍼/서브관계를 통합하여 성능향상
테이블 분할 수직분할 컬럼 단위의 테이블을 디스크 I/O 분산처리를 하기 위해 테이블을 1:1로 분리하여 성능 향상
수평분할 로우 단위로 집중 발생되는 트랜잭션을 분석하여 디스트 I/O 및 데이터 접근 효율을 높여 성능을 향상하기 위해 로우 단위로 테이블을 분리
테이블 추가 중복 테이블 추가  
통계 테이블 추가  
이력 테이블 추가  
부분 테이블 추가  

 

2) 컬럼의 반정규화 -> 매우 자주 쓰임

중복 컬럼 추가

파생 컬럼 추가

이력 테이블 컬럼 추가

PK에 의한 컬럼 추가

응용시스템의 오작동을 위한 컬럼 추가

 

3) 관계 반정규화

중복 관계 추가

반응형