728x90
반응형
SMALL
성능 데이터 모델링
데이터베이스의 성능을 향상시키기 위해 설계 단계부터 성능과 관련된 사항들이 모델링에 반영될 수 있다.
성능 데이터 모델링 방법
- 정규화
- 반정규화
- 테이블 통합
- 테이블 분할
성능 데이터 모델링 순서
- 데이터 모델에 맞게 정규화를 수행
- 데이터베이스 용량 및 트랜잭션 유형을 파악하여 성능 저하를 일으키는 부분이 없는지 검토
- 용량과 트랜잭션 유형에 맞게 반정규화를 수행
- 성능 향상을 위한 이력모델의 조정, PK/FK 조정, 슈퍼/서브타입 조정 등을 수행
- 데이터 모델의 성능을 검증
정규화(Normalization)
정규화를 수행하는 이유
데이터의 무결성을 보장하기 위해
1차 정규화
- 유사한 속성이 반복되지 않도록 엔티티를 분리
- 하나의 속성이 여러 개의 속성값을 갖는 데이터 모델
- 원자값이 아닌 도메인을 분해
2차 정규화
부분 함수 종속성을 제거
3차 정규화
- 일반속성이 일반속성에 종속
- 이행 함수 종속성을 제거
4차 정규화
다중값 종속성을 제거
반정규화(De-Normalization)
반정규화를 수행하는 이유
- 여러 번의 JOIN으로 인해 성능이 저하되는 것을 방지하기 위해
- 모델링의 마지막 단계에서 성능을 향상시키는 위해
- 런타임에 컬럼 계산으로 인한 속도 저하 우려될 경우
반정규화를 함으로써 조회 성능이 확실히 좋아지는 상황에서만 반정규화를 하는 것이 바람직
반정규화 기법
테이블 병합
- 1:1 관계
- 1:M 관계
- 슈퍼/서브타입: 공통 속성과 개별 속성을 별도로 관리
테이블 분할
- 수직
- 분할된 테이블은 1:1 관계
- 한 테이블에 속성의 개수가 과도하게 많을 경우 조회 성능을 향상시키기 위해 자주 쓰이는 속성과 그렇지 않은 속성을 나눔
- 테이블의 일부 속성을 별도의 테이블로 분리
- 수평
- 테이블의 특정 인스턴스를 별도의 테이블로 분할
테이블 추가
- 중복
- 데이터 무결성을 깨뜨릴 위험성 없이 데이터 처리 성능을 향상시킬 수 있는 기법
- 통계
- 이력
- 대량의 이력 테이블을 조회할 때 속도가 느려질 것을 대비하여 조회 기준이 될 것으로 판단되는 컬럼을 미리 추가해 놓는 방식
트랜잭션(Transaction)
- 데이터를 조작하기 위한 논리적인 작업 단위
- 하나의 커밋 단위로 묶여야 함
- 데이터 모델로 표현 가능
- 데이터는 트랜잭션 범위로 묶일 수 있음
※학습할 때 사용한 도서※
728x90
반응형
LIST
'IT' 카테고리의 다른 글
SELECT 문 (0) | 2022.10.05 |
---|---|
관계형 데이터베이스 (1) | 2022.10.04 |
트랜잭션(Transaction) & NULL (0) | 2022.10.01 |
SQL 반정규화(De-Normalization) 정리 (0) | 2022.09.20 |
백준 파이썬 알고리즘 연습 - 1157 단어 공부 (0) | 2022.08.13 |