[SQLD] 1과목 데이터 모델링의 이해 - 2 2:정규화와 성능


1. 정규화를 통한 성능 향상 전략.

- 정규화를 하는 것은 기본적으로 데이터에 대한 중복성을 제거해 주고 데이터가 관심사 별로 처리되는 경우가 많기 때문에 성능이 향상되는 특징을 가지고 있다.

- 엔터티가 계속 발생되므로 SQL 문장에서 조인이 많이 발생하여 성능저하가 나타나는 경우에는 사례별로 유의하여 반정규화를 적용하는 전략이 필요하다.

 * 데이터를 처리할 때 성능이라고 하면 조회성능과 입력/수정/삭제 성능의 두 분류로 구분된다.

- 정규화를 수행한다느 것은 데이터를 결정하는 결정자에 의해 함수적 종속성을 가지고 있는 일반 속성을 의존자로 하여 입력/수정/삭제 이상을 제거하는것이다.

 * 데이터의 중복성을 제거하고 결정자에 의해 동일한 의미의 일반 속성이 하나의 테이블로 집약되므로 한 테ㅣ블의 데이터 용량이 최소화 되는 효과가 있다.

=> 정규화된 테이블은 데이터를 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있는 특성이 있다.

일반적으로 정규화를 수행해야 데이터 처리의 능력(입력/수정/삭제)이 향상되며, 데이터 조회처리 트랜잭션시에 성능저하가 나타날 수 있다.


2.반정규화된 테이블의 성능저하 사례1.

- 2차 정규화를 적용한 테이블에 대해서 조인을 하더라도 PK Unique Index를 이용하면 조인 성능 저하는 미미하게 발생한다.

 * PK가 걸려있는 방향으로 조인이 걸려 Unique Index를 곧바로 찾아서 데이터릴 조회하기 때문에 하나의 테이블에서 조회하는 작업과 비교했을 때 미미하게 성능차이가 날 뿐 사용자에게 큰 영향을 줄만큼 저하되는 일은 없다.


3. 반정규화된 테이블의 성능저하 사례2

- 이 업무는 물건을 매각할 때 매각일자를 정하고 그 일자에 해당하는 매각시간과 매각장소가 결정하는 속성의 성격을 가지고 있다. 즉 매각일자가 결정자가 되고 매각장소가 의존자가 되는 함수적 종송관계가 형성되는 관계이다.

- 대량의 데이터에서 조인 조건이 되는 대상을 찾기 위해 인라인뷰를 사용하기 때문에 성능이 저하된다.

이를 정규화 하려면 복합식별자 중에서 일반속성이 주식별자 속성 중 일부에만 종속관계를 가지고 있으므로 2차정규화의 대상이된다.

- 2차정규화르 적용하여 매각일자를 PK로 하고 매각시간과 매각장소는 일반속성이 되었으며 정규화를 적용했기 때문에 매각일자를 PK로 사용하는 매각일자별 매각내역과도 관계가 연결된다.


4. 반정규화된 테이블의 성능저하 사례3.

- 두 개 이상의 속성으로 나열하여 반정규화한 경우.

- 유형기능분류코드 단위로 데이터처리를 해야하여 인덱스를 생성하려면 9개의 인덱스를 생성하야한다.

- 한테이블에 인덱스가 많아지면, 조회성능은 좋아질 수 있으나 데이터 입력, 수정, 삭제 성능은 저하된다.


5. 함수적 종속성에 근거한 정규화 수행 필요.

- 함수의 종속성은 데이터들이 어떤 기준값에 의해 종속되는 현상을 지칭하는것이다.

- 이 때 기준값을 결정자 라고 하고 종속되는 값을 종속자 라고 한다.



 

- 사람이라는 엔터티는 주민등록번호, 이름, 출생지, 호주 라는 속성이 존재한다. 여기에서 이름, 출생지, 호주라는 속성은 주민등록번호 속성에 종속된다.

 즉 주민등록번호가 이름, 출생지, 호주를 함수적으로 결정한다 라고 말할 수 있다.

- 기본적으로 데이터는 속성간의 함수종속성에 근거하여 정규화 되어야 한다.