반정규화 정리

2023. 1. 10. 10:39db

앞서 정규화에 대해서 글을 작성해봤다. 그렇다면 이러한 의문점이 든다. 정규화는 무조건 장점만 존재할까?

정규화는 릴레이션의 분리로 인해 조인이 많아져 질의에 대한 응답 시간이 느려지게 된다는 단점이 있다.

이러한 문제점을 해결할 수 있는 것이 반정규화다.

그렇다면 어떠한 경우에 반정규화를 해주면 좋을까?

 

반정규화를 수행하면 좋은 경우

1. 정규화를 통해 수행속도가 느려진 경우

2. 특정 범위의 데이터를 자주 조회하는 경우

3. 요약 / 집계 정보가 자주 요구되는 경우

 

그렇다면 반정규화 하는 방법은 어떤 것이 있을까?

1. 테이블 병합

조인되는 경우가 많아서 테이블을 합치는 것이 성능향상에 효율적인 경우에 사용

 

2. 테이블 분할

테이블에서 특정 속성들만 집중적으로 접근할 경우 분할하여 사용

1) 수직분할 : 특정 속성들만 접근이 잦을 경우 칼럼을 쪼개서 테이블 만든다.

2) 수평분할: 스키마는 동일하지만, 그 데이터 값을 이용하는 방법이 row별로 구분지어지는 경우 사용

 

3. 테이블 추가

1) 중복테이블 추가 : 다른 업무이거나 서버가 다른 경우 동일한 테이블 구조를 중복하여 원격조인을 제거하여 성능 향상

2) 통계테이블 추가:  sum, avg 등을 미리 수행하여 자동 계산해둠으로써 조회시 성능 향상

 

'db' 카테고리의 다른 글

mysql dump 사용법  (0) 2023.05.22
데이터 무결성  (0) 2023.01.10
정규화 정리  (0) 2023.01.10
인덱스 정리  (2) 2022.12.21
트랜잭션 REQUIRES_NEW 옵션  (0) 2022.12.18