DB/SQLD

반정규화

필리힐리 2021. 3. 16. 00:56

반정규화란?

정규화는 쓰기의 편의성을 위해 읽기의 성능을 어느 정도 희생 (join을 써야하기 때문)

이 정규화 된 모델을 성능이나 개발 편의성을 위해 구조를 바꾸는 것

*정규화와 달리 규격화된 방법이 있지는 않다

 

반정규화의 예시들

1. 테이블을 병합해 Join을 줄이기 (Join과 같은 효과)

2. 파생 컬럼의 형성으로 계산 작업을 줄이기

3. 컬럼을 기준으로 데이터가 많은 테이블을 분리

4. 행을 기준으로 데이블 분리 (1~100, 101~200, 201~300 ...)

5. foreign 키의 추가를 통해 지름길을 만들기

 

데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는

데이터를 조회할 때 디스크 량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상되거나

칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 반정규화를 수행한다

 

 

 

 

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

대량 데이터에 따른 성능  (0) 2021.03.16
정규화  (0) 2021.03.15
성능 데이터 모델링  (0) 2021.03.15
식별자  (0) 2021.03.15
관계  (0) 2021.03.14