본 문서의 내용은 한국데이터산업진흥원에서 펴낸 SQL 전문가 가이드를 기반으로 자격증 취득에 도움이 될 개념을 정리한 것입니다.
|
2. 정규화와 성능
1. 정규화를 통한 성능 향상 전략
정규화를 하는 것은 기본적으로 데이터에 대한 중복성을 제거하여 주고 데이터가 관심사별로 처리되는 경우가 많기 때문에 성능이 향상되는 특징을 가지고 있다.
정규화를 수행한다는 것은 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반속성을 의존자로 하여 입력/수정/삭제 이상을 제거하는 것이다. 데이터의 중복속성을 제거하고 결정자에 의해 동일한 의미의 일반속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다.
정규화 수행 모델은 데이터를 입력/수정/삭제할 때 일반적으로 반정규화된 테이블에 비해 처리 성능이 향상된다. 단 데이터를 조회할 때에는 처리 조건에 따라 조회 성능이 향상될 수도 있고 저하될 수도 있다.
2. 반정규화된 테이블의 성능저하 사례 (1)
정규화 분류
- 1차 정규화: 반복되는 속성을 제거하고, 새로운 테이블을 추가한 후에 기존 테이블과 일대다 관계를 형성
- 2차 정규화: 기본키가 복합키로 구성되었을 때, 일부에 의존적인 컬럼이 있으면(부분적 함수 종속 관계) 이를 제거
- 3차 정규화: 기본키에 의존하지 않고 일반 컬럼에 의존하는(이전적 함수 종속 관계) 컬럼 제거
3. 반정규화된 테이블의 성능저하 사례 (2)
2 차 정규화를 적용하여 매각일자를 PK 로 하고 매각시간과 매각장소는 일반속성이 되었다. 정규화를 적용했기 때문에 매각일자를 PK 로 사용하는 매각일자별매각내역과도 관계가 연결된다. 따라서 업무흐름에 따른 적확한 데이터 모델링 표기도 가능해지고, 드라이빙이 된 테이블 이 5 천 건의 매각기일 테이블이 되므로 성능도 향상된다.
4. 반정규화된 테이블의 성능저하 사례 (3)
중복속성에 대한 분리가 1차 정규화의 정의임을 고려하면 모델 테이블은 1차 정규화의 대상이 된다. 로우단위의 대상도 1차 정규화의 대상이 되지만 칼럼 단위로 중복이 되는 경우도 1차 정규화의 대상이 된다.
하나의 테이블에 9 개가 반복적으로 나열이 되어 있을 때는 인덱스 생성이 어려웠지만 정규화되어 분리된 이후에는 인덱스 추가 생성이 0 개가 되었다. 또한 분리된 테이블 모델기능분류코드에서 PK 인덱스를 생성하여 이용함으로써 성능이 향상될 수 있다.
5. 반정규화된 테이블의 성능저하 사례 (4)
일재고와 일재고 상세를 구분함으로써 일재고에 발생되는 트랜잭션의 성능저하를 예방할 수 있게 되었다.
6. 함수적 종속성(Functional Dependency)에 근거한 정규화 수행 필요
함수의 종속성(Functional Dependency)은 데이터들이 어떤 기준값에 의해 종속되는 현상을 지칭하는 것이다. 이 때 기준값을 결정자(Determinant)라 하고 종속되는 값을 종속자(Dependent)라고 한다.
정규화의 궁극적인 목적은 반복적인 데이터를 분리하고 각 데이터가 종속된 테이블에 적절하게(프로세스에 의해 데이터의 정합성이 지켜질 수 있어야 함) 배치되도록 하는 것이므로 이 함수의 종속성을 이용하여 정규화 작업이나 각 오브젝트에 속성을 배치하는 작업에 이용이 되는 것이다.
↓SQL 전문가 가이드 요약 목록
1장. 데이터 모델링의 이해
Part 1. 데이터 모델링의 이해
Part 2. 데이터 모델과 성능
2장. SQL 기본 및 활용
Part 1. SQL 기본
Part 2. SQL 활용
Part 3. SQL 최적화 기본원리
따로 PDF 파일이 필요하신 분은 댓글을 통해 메일 주소 적어주시기 바랍니다.
'데이터 사이언스 > SQL' 카테고리의 다른 글
[SQLD 학습 자료 요약] 데이터 모델링의 이해 2.4. 대량 데이터에 따른 성능 (0) | 2020.11.17 |
---|---|
[SQLD 학습 자료 요약] 데이터 모델링의 이해 2.3. 반정규화와 성능 (0) | 2020.11.16 |
[SQLD 학습 자료 요약] 데이터 모델링의 이해 2.1. 성능 데이터 모델링 개요 (1) | 2020.11.16 |
[SQLD 학습 자료 요약] 데이터 모델링의 이해 1.5. 식별자 (0) | 2020.11.16 |
[SQLD 학습 자료 요약] 데이터 모델링의 이해 1.4. 관계 (3) | 2020.11.11 |