1. 정규화를 통한 성능향상 전략
정의
데이터에 대한 중복성을 제거 → 성능향상
정규형: 졍규화로 도출된 데이터 모델이 가져야 할 특성
정규화를 수행하여 성능향상
일반적으로 정규화를 수행해야 데이터 처리의 성능(입력/수정/삭제)이 향상되며, 데이터 조회처리 트랜잭션시 성능 저하가 나타날 수 있다.
일반적으로 정규화가 잘 되어 있으면 입력/수정/삭제의 성능이 향상되고 반정규화를 많이 하면 조회의 성능이 향상된다고 인식될 수 있다. 그러나 데이터 모델링을 할 때 반정규화만이 조회 성능을 향상시킨다는 고정관념은 탈피되어야 한다.
2. 정규화 이론
1차 졍규화
속성의 원자성을 확보, 다중값 속성 분리
2차 정규화
부분 함수 종속성 제거, 일부 기본키에만 종속된 속성을 분리함, 기본키가 하나의 칼럼일 때 생략 가능

3차 정규화
이행 함수 종속성 제거, 서로 종속관계가 있는 일반속성을 분리함, 주식별자와 관련성이 가장 낮음

보이스코드 정규화(BCNF; Boyce-Codd Normal Form)
후보키가 기본키 속성 중 일부에 함수적 종속일 때 다수의 주식별자를 분리함
4차 정규화, 5차 정규화
다치 종속 분리, 결합 종속 분리
3. 함수적 종속성에 근거한 정규화 수행 필요
함수적 종속성
데이터의 기준값에 의해 종속되는 현상. 결정자와 종속자의 관계, 결정자의 값으로 종속값을 알 수 있다.
결정자: 기준값 / 종속자: 종속되는 값
함수의 종속성은 데이터가 가지고 있는 근본적인 속성으로 인식되고 있다. 정규화의 궁극적인 목적은 반복적인 데이터를 분리하고, 각 데이터가 종속된 테이블에 정합성에 따라 배치되도록 하는 것이므로, 함수의 종속성을 이용하여 정규화 작업이나 각 오브젝트 속성을 배치하는 작업에 이용된다. 프로젝트 수행에서 정규화는 선택이 아닌 필수사항이다.

다치 종속
여러 칼럼이 동일한 결정자의 종속자일 때
4. 정규화와 성능
정규화는 입출력 데이터의 양을 줄여 성능을 향상시킴
정규화로 인한 성능 향상
입력/수정/삭제 시 성능은 항상 향상됨
유연성 증가: High Cohesion & Loose Coupling 원칙에 충실해짐
재활용 가능성 증가: 개념이 세분화됨
데이터 중복 최소화
정규화로 인한 성능 저하
조회 시 처리 조건에 따라 성능 저하가 발생할 수도 있음
데이터 조회 시 조인을 유발하여 CPU와 메모리를 많이 사용하게 됨
→ 반정규화로 해결 가능
→ 조인이 발생하더라도 인덱스를 사용하여 조인 연산을 수행하면 성능 상 단점이 거의 없고, 정규화를 통해 필요한 인덱스의 수를 줄일 수 있음
→ 정규화를 통해 소량의 테이블이 생성된다면 성능 상 유리할 수 있음
'Study > SQLD' 카테고리의 다른 글
1-2장 데이터 모델과 성능 - 4절 대량 데이터에 따른 성능 (0) | 2022.06.17 |
---|---|
1-2장 데이터 모델과 성능 - 3절 반정규화와 성능 (0) | 2022.06.16 |
1-2장 데이터 모델과 성능 - 1절 성능 데이터 모델링의 개요 (0) | 2022.06.14 |
1-1장 데이터 모델링의 이해 - 5절 식별자 (0) | 2022.06.13 |
1-1장 데이터 모델링의 이해 - 4절 관계 (0) | 2022.06.12 |