정규화를 통한 성능 향상 전략
- 정규화를 수행하는 것은 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반속성을 의존자로 하여 입력/수정/삭제 이상을 제거하는 것 -> 한 테이블의 데이터 용량이 최소화되는 효과
*정규화: 데이터의 일관성, 최소한의 데이터 중복, 최소한의 데이터 유연성을 위한 방법, 데이터를 분해하는 과정
(제1정규화(중복값 제거, 원자성 확보), 제2정규화(부분 함수 종속성 제거, PK 2개 이상일 때 종속되는 관계 분리), 제3정규화(이진적 함수 종속 관계, PK에 의존하지 않고 일반 컬럼에 의존하는 컬럼 제거), BCNF, 제4정규화, 제5정규화)
*반정규화: 데이터의 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법(조회 속도 향상 but 모델 유연성 저하)
일반적으로 정규화를 수행해야 데이터처리의 성능이 향상되며 데이터의 조회처리 트랜잭션시에 성능저하가 나타날 수 있음
-> 하지만 그렇다고 반정규화만이 조회 성능을 향상시킨다고 할 수는 없다. 정규화를 해서 성능이 향상되는 경우도 많기 때문이다.
ex) 2차 정규화를 적용한 테이블에 대해서 조인을 하더라도 PK Unique Index를 이용하면 조인 성능 저하는 미미하게 발생
ex) 2개의 엔터티가 통합되어 반정규화된 또 다른 경우(물건 매각 시, 매각일자 정하고 그 일자에 해당하는 매각시간과 매각장소가 결정되는 업무) -> 매각일자가 결정자가 되고 매각시간과 매각장소가 의존자가 되는 함수적 종속관계 형성
매각일자 5천 건, 일자별매각물건 100만 건
특정 매각장소에 대해 매각일자를 찾아 매각내역을 조회하려면 100만 건의 데이터를 읽어 매각일자를 DISTINCT하여 매각일자별매각내역과 조인이 된다.
-> 대량의 데이터에서 조인 조건이 되는 대상을 찾기 위해 서브 쿼리를 사용하기 때문에 성능 저하 발생. 2차 정규화 적용 필요.
2차 정규화를 적용하면 매각일자를 PK로 하고 매각시간과 매각장소를 일반 속성이 된 테이블로 따로 분리. 따라서 조건절에 매각장소를 입력해 조회하면 5천건의 데이터를 읽어서 조회 성능을 높일 수가 있다.
함수적 종속성에 근거한 정규화 수행 필요
- 함수의 종속성은 데이터들이 어떤 기준값에 의해 종속되는 현상을 지칭. 이 때 기준값을 결정자, 종속되는 값을 종속자라고 함.
주민등록번호 -> (이름, 출생지, 호주)
-> "주민등록번호가 이름, 출생지, 호주를 함수적으로 결정한다"라고 말할 수 있다.
'데이터베이스 > SQLD' 카테고리의 다른 글
2-4 대량 데이터에 따른 성능 (0) | 2022.09.16 |
---|---|
2-3 반정규화와 성능 (0) | 2022.09.16 |
2-1 성능 데이터 모델링 (0) | 2022.09.16 |
1-5 식별자 (0) | 2022.09.15 |
1-4 관계 (0) | 2022.09.15 |