제 2장. 데이터 모델과 성능
성능 데이터 모델링
1. 성능 데이터 모델링 개념
- 성능 데이터 모델링은 데이터베이스 성능향상을 위한 것.
- 정규화, 반정규화, 테이블통합, 테이블 분할, 조인구조, PK, FK 등이 존재함
2. 성능 데이터 모델링 수행
- 사전에 할 수 록 비용이 들지 않는다.
- 분석/설계 단계에서 데이터 베이스 처리 성능을 향상 시킬 수 있는 방법을 고려해야 한다.
3. 성능 데이터 모델링 고려사항
- 데이터 모델링을 할 때 정규화를 정확하게 수행한다.
- 데이터 베이스 용량 산정을 수행한다.
- 데이터 베이스에 발생되는 트랜잭션의 유형을 파악한다.
- 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.
- 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행한다.
- 성능관점에서 데이터 모델을 검증한다.
정규화
1. 정규화 개념
- 함수적 종속을 가지고 있는 일반 속성을 의전자로 하여 입력/수정/삭제 이상현상을 제거하는 것
- 정규화된 테이블은 처리 속도가 빨라질 수도 있고 느려질 수도 있다.
- 정규화된 데이터 모델은 조회시에는 성능이 향상될 수도 있고, 저하될 수도 있다. 반면, 입력/수정/삭제 시에는 무조건 성능이 향상된다.
2. 정규화 이론
-
제 1 정규형
: 모든 속성은 원자값을 가져야 한다.
: 다중 값을 가질 수 있는 속성은 분리 되어야 한다.
-
제 2 정규형
: 기본 키에 종속적이지 않거나 기본 키 일부 컬럼에만 종속적인 컬럼은 분리 되어야 한다. (=부분종속을 분리해야 한다)
-
제 3 정규형
: 일반속성 간 종속관계가 존재하는 것들은 분리해야 한다. (=이전종속 속성을 분리해야 한다)
3. 반정규화
1. 반정규화 개념
- 데이터를 조회할 때 디스크 I/O 량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상될 때 사용한다.
- 혹은 컬럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 사용한다.
2. 반정규화 기법 : 테이블 반정규화
-
테이블 병합
1- 1:1 관계 테이블 병합
2- 1:M 관계 테이블 병합
3- 슈퍼/서브타입 테이블 병합
-
테이블 분할
1- 수직 분할 : 컬럼 단위
2- 수평 분할 : 로우 단위
-
테이블 추가
1- 중복 테이블 추가
2- 통계 테이블 추가
3- 이력 테이블 추가
4- 부분 테이블 추가 : 자주 이용하는 집중화된 칼럼들이 있을 때 활용
3. 반정규화 기법 : 컬럼의 반정규화
1- 중복 칼럼 추가
2- 파생 칼럼 추가
3- 이력 테이블 칼럼 추가
4- PK에 의한 칼럼 추가
5- 응용시스템 오작동을 위한 칼럼 추가
4. 대용량 테이블에서 발생할 수 있는 현상
- 로우 체이닝 :
로우 길이가 길어서 데이터 블록에 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되는 형태
- 로우 마이그레이션 :
데이터 블록에서 수정이 발생되면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식
5. 슈퍼타입과 서브타입
- 데이터의 특징을 분석하여 공통점과 차이점을 고려하여 효과적으로 표현할 수 있다.
- 공통된 부분을 슈퍼타입으로, 다른 엔터티와 차이가 있는 부분은 서브타입으로 구분.
4. PK/FK 칼럼 순서 및 성능
- PK/FK 칼럼의 순서는 중요하다.
- 인덱스 선두 칼럼에 '=' 조건이 나와야 성능이 더욱 좋다.
5. 분산 데이터베이스
1. 분산 데이터베이스 개념
- 논리적으로 동일한 시스템이며, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터 베이스
2. 분산 데이터 베이스 장/단점
- 장점
- 신뢰성과 가용성이 높다.
- 효용성과 융통성이 높다.
- 응답속도가 빠르다.
- 통신비용이 절감된다.
- 단점
- 소프트웨어 개발 비용이 증대된다.
- 불규칙한 응답 속도를 가진다.
- 데이터 무결성에 대한 위협이 존재한다.
3. 분산 데이터베이스 적용 기법
1- 테이블 위치 분산
2- 테이블 분할 분산
3- 테이블 복제 분산
4- 테이블 요약 분산
참고 :
https://brunch.co.kr/@4ec2ea79b44a440/157