정규화된 데이터 모델은 조회 시에는 처리 조건에 따라 성능이 향상 혹은 저하 된다
정규화된 데이터 모델은 입력/수정/삭제 시 무조건 성능이 향상이 된다
용어 | 설명 |
---|---|
정규화 | 함수적 종속성 등과 같은 이론에 근거하여 관계형 데이터베이스 테이블의 삽입,삭제,갱신 이상 현상 발생을 최소화하기 위해 좀 더 작은 단위의 테이블로 설계하는 과정, 즉, 데이터 모델을 정규형에 맞도록 고치는 과정 |
정규형 | 정규화 규정 정규화 결과에 의해 도출된 데이터 모델이 갖춰야 할 특성 |
함수적 종속성 | 테이블의 특정 컬럼 A의 값을 알면 다른 컬럼 B의 값을 알 수 있을 때 컬럼 B는 컬럼A에 함수적 종속성이 있다고 함(고객명은 고객주민등록번호에 함수적 종속성이 있음) |
결정자 | 함수적 종속성 설명에서, 컬럼 A를 결정자라고 함 |
다치종속 | 결정자 컬럼 A에 의해 컬럼 B의 값을 다수 개 알 수 있을 때, 컬럼 B는 컬럼 A에 다치 종속 되었다고 함(학번을 알면 해당 학생의 다수 개 수강과목을 알 수 있을 때, 수강과목은 학번에 다치 종속 관계임) |
정규형 특징
제 1 정규형
제 2 정규형
제 3 정규형
기법 분류 | 기법 | 내용 |
---|---|---|
테이블 병합 | 1:1 관계 테이블 병합 | 1:1 관계를 통합하여 성능향상 |
1:M 관계 테이블 병합 | 1:M 관계를 통합하여 성능 향상 | |
슈퍼/서브타입 테이블 병합 | 슈퍼/서브 관계를 통합하여 성능 향상 | |
테이블 분할 | 수직 분할 | 컬럼 단위의 테이블을 디스크 I/O 분산처리를 하기 위해 테이블을 1:1 로 분리하여 성능향상 |
수평분할 | 로우 단위로 집중 발생되는 트랜잭션을 분석하여 디스크 I/O 및 데이터 접근 효율을 높여 성능 향상 | |
테이블 추가 | 중복 테이블 추가 | 다른 업무이거나, 서버거 다른 경우 테이블 구조를 중복하여 원격조인을 제거하여 성능을 향상 |
통계테이블 추가 | SUM, AVG 등을 미리 수행하여 계산해둠으로써 조회 시 성능을 향상 | |
이력테이블 추가 | 이력 테이블 중에서 마스터 테이블에 존재하는 레코드를 중복하여 이력테이블에 존재하는 방법은 반정규화 유형 | |
부분 테이블 추가 | 하나의 테이블의 전체 칼럼 중 자주 이용하는데 자주 이용하는 집중화된 칼럼들이 있을 때 디스크 I/O 를 줄이기 위해 해당 칼럼들을 모아놓은 별도의 반정규화된 테이블을 생성 |
PK / FK 칼럼 순서와 성능 개요
◼ 테이블에 발생되는 트랜잭션 조회 패턴에 따라 PK/FK 칼럼의 순서를 조정해야 함
◼ 성능저하 현상이 많은 부분이 PK 가 여러 개의 속성으로 구성된 복합식별자 일 때
PK 순서에 대해 별로 고려하지 않고 데이터 모델링을 한 경우에 해당
◼ 물리적인 데이터 모델링 단계에서는 스스로 생성된 PK 순서 이외에 다른
엔터티로부터 상속받아 발생되는 PK 순서까지 항상 주의하여 표시
PK 가 복합키일 경우 칼럼 순서가 성능에 영향을 미치는 이유
◼ 인덱스 선두 칼럼에 대한 조건이 들어와야 한다. (가능한한 ‘=‘ 조건으로)
◼ 인덱스 선두 칼럼에 대한 조건이 들어오지 않을 경우 인덱스 전체를 읽거나 테이블
전체를 읽게 됨
PK 순서의 중요성
◼ 데이터 모델 관계에 의해 상속받은 FK 속성들은 SQL WHERE 절에서 조인으로
이용되는 경우가 많으므로, FK 인덱스를 생성해야 성능이 좋음
◼ FULL TABLE SCAN 이 발생하지 않도록 순서 구성
장점
단점