정규화를 통한 성능 향상 전략
데이터 모델링을 하면서 정규화를 하는 것은 기본적으로 데이터에 대한 중복성을 제거하여 주고 데이터가 관심사별로
처리되는 경우가 많기 때문에 성능이 향상되는 특징을 가지고 있다.
물론 엔터티가 계속 발생되므로 SQL 문장에서 조인이 많이 발생하여 이로 인한 성능저하가 나타나는 경우도 있지만 이런 부분은 사례별로 유의하여 반정규화를 적응하는 전략이 필요하다.
- 데이터베이스에서 데이터 처리의 성능
- 조회 성능
- 입력/수정/삭제 성능
정규화를 수행한다는 것은 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는
일반 속성을 의존자로 하여 입력/수정/삭제 이상을 제거하는 것이다.
따라서 정규화된 테이블은 데이터를 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있는 특성이 있다.
일반적으로 정규화가 잘 되어 잇으면 입력/수정/삭제의 성능이 향상되고,
반정규화를 많이하면 조회의 성능이 향상된다고 인식될 수 있다.
그러나 데이터 모델링을 할 때 반정규화만이 조회 성능을 향상시킨다는 고정 관념은 탈피되어야 한다.
반정규화된 테이블의 성능저하 사례 1
반정규화된 테이블의 성능저하 사례 2
반정규화된 테이블의 성능저하 사례 3
반정규화된 테이블의 성능저하 사례 4
함수적 종속성(Functional Dependency)에 근거한 정규화 수행 필요
함수의 종속성(Functional Dependency)은 데이터들이 어떤 기준값에 의해 종속되는 현상을 지칭하는 것이다.
이때 이 기준값을 결정자(Determinant)라 하고 종속되는 값을 종속자(Dependent)라고 한다.
사람이라는 엔터티는 주민등록번호, 이름, 출생지, 호주라는 속성이 존재한다.
여기에서 이름, 출생지, 호주라는 속성은 주민등록번호 속성에 종속된다.
만약 어떤 사람의 주민등록번호가 신고되면 그사람의 이름, 출생지, 호주가 생성되어 단지 하나의 값만을 가지게 된다.
이를 기호로 표시하면, 다음과 같이 표현할 수 있다.
주민등록번호 -> (이름, 출생지, 호주)
즉, "주민등록번호가 이름, 출생지, 호주를 함수적으로 결정한다." 라고 말할 수 있다.
실세계의 데이터들은 대부분 이러한 함수 종속성을 가지고 있다.
함수의 종속성은 데이터가 가지고 있는 근본적인 속성으로 인식되고 있다.
정규화의 궁극적인 목적은 반복적인 데이터를 분리하고 각 게이터가 종속된 테이블에 적절하게 (프로세스에 의해 데이터의 정합성이 지켜질 수 있어야 함) 배치되도록 하는 것 이므로 이 함수의 종속성을 이용하여 정규화 작업이나 각 오브젝트에 속성을 배치하는 작업에 이용이 되는 것이다.
# Reference:
'Language > RDBMS' 카테고리의 다른 글
대량 데이터에 따른 성능 (0) | 2023.03.07 |
---|---|
반정규화와 성능 (0) | 2023.03.07 |
성능 데이터 모델링 (0) | 2023.03.07 |
식별자(Identifiers) (0) | 2023.03.07 |
관계(Relationship) (0) | 2023.03.07 |