SQLD 단원별 목록으로
1. 정규화를 통한 성능 향상 전략
- 데이터 모델링을 하면서 정규화를 하는 것은 기본적으로 데이터에 대한 중복성을 제거하여 주고 데이터가 관심사별로
처리되는 경우가 많기 때문에 성능이 향상되는 특징을 가진다.
- 일반적으로 정규화가 잘 되어 있으면 입력/수정/삭제의 성능이 향상되고 반정규화를 많이 하면 조회의 성능이 향상된다고 인식될 수
있으나 데이터 모델링을 할 때 반정규화만이 조회 성능을 향상한다는 고정관념을 탈피되어야 한다.
정규화를 해서 성능이 저하되기는 커녕 정규화를 해야만 성능이 향상되는 경우가 많이 나타나기 때문이다.
2. 반정규화된 테이블의 성능저하 사례 ①
- 왼쪽 그림은 2차 정규화가 안 된 반정규화 테이블, 오른쪽 그림은 부분키 종속을 정규화하여 2차 정규화된 테이블의 모습
- 2차 정규화가 안 된 테이블은 직급명과 함께 반정규화된 관서번호, 관서명을 조회하면 하나의 테이블에서 데이터가 조회가 되고,
2차 정규화된 테이블은 관서번호, 관서명이 관서 테이블에만 존재하기 때문에 두 개의 테이블을 조인하여 처리해야 한다.
3. 반정규화된 테이블의 성능저하 사례 ②: 두 개의 엔터티가 통합되어 반규화된 경우
- 매각일자가 결정자가 되고 매각시간과 매각장소가 의존자가 되는 함수적 종속관계가 형성되는 관계이다. 매각일자는 5천 건이 있고
일자별매각물건은 100만 건이 있는 것으로 가정.
- 대량의 데이터에서 조인 조건이 되는 대상을 찾기 위해 인라인뷰를 사용하기 때문에 성 능이 저하된다. 이를 정규화하려면 복합식별자
중에서 일반속성이 주식별자 속성 중 일부에 만 종속관계를 가지고 있으므로 2차 정규화의 대상이 된다.
- 정규화를 적용했기 때문에 매각일자를 PK로 사용하는 매각일자별 매각내역과도 관계가 연결된다. 따라서 업무흐름에 따른 적확한 데이터 모델링 표기도 가능해지고, 드라이빙이 된 테이블 이 5천 건의 매각기일 테이블이 되므로 성능도 향상된다.
- 매각기일 테이블이 정규화 되면서 드라이빙이 되는 대상 테이블의 데이터가 5천 건으로 줄어들어 조회 처리가 빨라진다.
4. 반정규화된 테이블의 성능저하 사례
③: 동일한 속성 형식을 두 개 이상의 속성으로 나열하여 반정규화한 경우
- 한 테이블에 인덱스가 많아지면 조회 성능은 향상되지만 데이터 입력/수정/삭제 성능은 저하된다. 그래서 일반 업무처리(온라인성 업무)
에서는 인덱스 수를 가급적 7~8개가 넘지 않도록 하는 것이 좋다.
- 각 유형별로 모두 인덱스가 걸려 있어야 인덱스에 의해 데이터를 찾을 수 있다. 이런 모 델은 다음과 같이 정규화를 적용해야 한다.
- 중복속성에 대한 분리가 1차 정규화의 정의임을 고려하면 모델 테이블은 1차 정규화의 대상이 된다. 로우단위의 대상도 1차 정규화의
대상이 되지만 칼럼 단위로 중복이 되는 경 우도 1차 정규화의 대상이 된다.
- 위 SQL구문은 유형코드+기능분류코드+모델코드에 인덱스가 걸려 있으므로 인덱스를 통해 데이터를 조회함으로써 성능이 향상된다.
6. 함수적 종속성(Functional Dependency)에 근거한 정규화 수행 필요
- 함수의 종속성(Functional Dependency)은 데이터들이 어떤 기준값에 의해 종속되는 현 상을 지칭하는 것이다. 이때 기준값을
결정자(Determinant)라 하고 종속되는 값을 종속자 (Dependent)라고 한다.
- 함수의 종속성은 데이터가 가지고 있는 근본적인 속성으로 인식되고 있다. 정규화의 궁극적인 목적은 반복적인 데이터를 분리하고 각
데이터가 종속된 테이블에 적절하게(프로세 스에 의해 데이터의 정합성이 지켜질 수 있어야 함) 배치되도록 하는 것이므로 이 함수의
종속성을 이용하여 정규화 작업이나 각 오브젝트에 속성을 배치하는 작업에 이용이 되는 것이다.
'자격증 > SQL개발자(SQLD)' 카테고리의 다른 글
2-4장. 데이터 모델과 성능_대량 데이터에 따른 성능 (9) | 2023.05.18 |
---|---|
2-3장. 데이터 모델과 성능_반정규와 성능 (9) | 2023.05.17 |
2-1장. 데이터 모델과 성능_성능 데이터 모델링의 개요 (8) | 2023.05.16 |
1-5장. 데이터 모델링의 이해_식별자(Identifiers) (6) | 2023.05.14 |
1-4장. 데이터 모델링의 이해_관계(Relationship) (13) | 2023.05.14 |