728x90
반응형
정규화
데이터의 일관성, 최소 중복, 최대 유연성 위한 방법
데이터 분해 과정
테이블 분해 → 중복 제거 → 유연성 높임
입출력 데이터 양 줄여 성능 향상 시킨다
정규화 절차
제 1정규화 | 속성의 원자성 확보 기본키 설정 |
제 2정규화 | 기본키 2개 이상 부분 함수 종속 제거 |
제 3정규화 | 기본키 제외 칼럼 간의 종속 제거 이행 함수 종속 제거 |
BCNF | 기본키 제외 후보키 있는 경우 후보키가 기본키 종속시키면 분해 |
제 4정규화 | 여러 칼럼이 하나 칼럼 종속시키는 경우 다중값 종속 제거 |
제 5정규화 | 조인에 의해 발생 경우 분해 |
정규화 문제점
데이터 조회(SELECT) 시에 join유발 → 메모리, CPU 사용량 높임
반정규화
중복 허용, join 감소시켜 DB성능 향상
SELECT 속도 향상 but, 유연성 낮아짐
반정규화 수행하는 경우
정규화로 인해 SELECT 속도 느려진 경우
다량의 범위 자주 처리
특정 범위 자주 처리
요약, 집계 정보 자주 요구
반정규화 절차
대상 조사 및 검토 | 반정규화 대상 조회 |
다른 방법 검토 | 클러스터링, 뷰, 인덱스 튜닝, 응용 프로그램 파티션 등 1. 클러스터링 인덱스 정보를 저장할 때 물리적으로 정렬하여 저장하는 방법 연속적으로 읽기 때문에 성능 향상됨 2. 파티션 기법 논리적으로 하나의 테이블이지만 어려 개의 데이터 파일에 분산되어 저장됨 range partition: 범위 list partition: 특정 값 지정 hash partition: 해시 함수 composite partition: 범위+해쉬 - 장점 access 범위 감소 → SELECT 성능 향상 데이터가 분할 저장 → input/output 성능 향상 파티션 독립적 백업, 복구 가능 |
반정규화 수행 | 테이블, 속성, 관계 등을 반정규화 한다. |
반정규화 기법
계산된 칼럼 추가 | 배치 프로그램으로 미리 계산하고, 그 결과를 특정 칼럼에 추가 |
테이블 수직분할 | 칼럼을 분할하여 새로운 테이블 생성 |
테이블 수평분할 | 하나의 테이블에 있는 값 기준으로 테이블 분리 |
테이블 병합 | 1대1 관계 테이블 → 하나의 테이블 1대N 관계 테이블 → 하나의 테이블 ⇒ 많은 양의 데이터 중복 발생 슈퍼 타입, 서브타입 관계 → 테이블 통합 |
테이블 병합
OneToOne | Plus | Single |
super, sub 개별 테이블 도출 테이블 수 많아 → 조인 발생 많아 → 관리 어렵 |
super, sub 테이블 도출 조인 발생 → 관리 어렵 |
super, sub → 하나의 테이블로 도출 조인 성능 좋음, 관리 편리 input/output 성능 별로 |
728x90
반응형
'자격증 > SQLD' 카테고리의 다른 글
SQLD - 관계형 데이터베이스 (0) | 2023.09.02 |
---|---|
SQLD - 분산데이터베이스 (0) | 2023.09.02 |
SQLD - attribute (0) | 2023.09.01 |
SQLD - 데이터 모델링 (0) | 2023.09.01 |
SQLD - 스키마 (0) | 2023.09.01 |