티스토리 뷰

반정규화

: 정규화로 데이터 조회 비용이 늘어남, SELECT 속도 향상을 위해 중복을 허용하여 DB 구조 재조정

 

 

 

반정규화 방법

테이블 병합

두 테이블이 조인되어 사용하는 경우가 많으면, 성능 향상을 위해 하나의 테이블로 병합하여 사용

 

고려사항

조회가 간편하지만 레코드(row) 증가로 데이터 처리량 증가

입력, 수정, 삭제 규칙이 복잡해질 수 있음

NOT NULL, DEFAULT, CHECK 등 constraint 설계가 어려움

 

 

테이블 분할

수직 분할

테이블에 속성이 너무 많을 경우, 칼럼을 분할하여 새로운 테이블을 만드는 것

UPDATE/SELECT 자주 되는 속성 / 크기가 큰 속성 / 보안 적용이 필요한 특정 속성을 분할

 

수평 분할

레코드별 사용 빈도에 따라 레코드를 기준으로 테이블 분할

 

고려사항

수행 속도가 느려질 수 있음, 검색에 중점을 두어 분할 여부 결정

기본키의 유일성 관리가 어려움

데이터 양이 적거나 사용 빈도가 낮은 경우 분할이 필요한지 고려

 

 

중복 테이블 추가

작업의 효율성을 위해 중복 테이블을 추가함

- 집계 테이블 추가: 원본 테이블에 트리거를 설정하여 사용

- 진행 테이블 추가: 이력 관리 목적

- 특정 부분만 포함하는 테이블

 

 

중복 속성 추가

조인해서 데이터를 처리시 조회하는 것을 단축시키기 위해 속성을 추가함

조인을 자주하는 속성 / 접근 경로가 복잡한 속성 / 액세스 조건으로 사용되는 속성

 

고려사항

테이블 중복, 칼럼의 중복 고려

데이터 일관성, 무결성에 유의

SQL Group 함수를 이용하여 처리할 수 있어야 함

저장 공간의 지나친 낭비 고려

 

 

댓글