성능 데이터 모델링 is... |
성능 데이터 모델링이란 데이터베이스의 성능 향상을 목적으로 설계 단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것이다. |
1. 정규화를 통한 성능 향상 |
일반적으로 정규화가 잘 되어 있으면 입력, 수정, 삭제의 성능이 향상되고, 반정규화를 많이 할 수록 조회 성능이 향상된다. 그러나 꼭 반정규화만이 조회 성능을 향상시킨다는 고정관념을 깨야한다. 정규화를 해야만 성능이 향상되는 경우도 많이 있기 때문다. |
2. 반정규화를 통한 성능 향상 |
물리적인 데이터 모델을 설계할 때 적절하게 반정규화를 수행하지 않으면 성능 저하 현상이 나타난다. 반정규화를 전혀 적용하지 않아 복잡한 SQL 구분이 작성되어 가독성이 떨어지며, SQL 구분의 작성되어 가독성, 성능이 저하되는 경우가 많이 나타난다. |
3. PK 순서 조정을 통한 성능 향상 |
간단한 것 같지만, 실적 프로젝트에서 아주 중요한 내용이 바로 PK 순서다. 복합 식별자의 PK순서를 고려하여 모델링 한다. |
4. FK 인텍스 생성을 통한 성능 향상 |
FK를 물리적인 테이블에 걸었을 때는 반드시 FK 인덱스를 생성한다. |
5. 이력 모델의 구분과 기능성 컬럼을 통한 성능 향상 |
시간에 따라 국분되는 이력은 발생이력, 변경이력, 진행이력으로 구분할 수 있다. - 발생이력, 변경이력의 경우 최신 값에 대한 기능성 컬럼을 추가한다. (최신여부 = 'Y') - 진행이력의 경우 시작과 종료에 대한 기능성 컬럼을 추가한다. |
6. 슈퍼타입/서브타입 구분을 통한 성능 향상 |
슈퍼타입/서브타입 모델을 물리모델로 전환 할 때 트랜잭션을 검증한다. - 트랜잭션이 작은 경우 수퍼타입으로 통합한다. - 데이터 양이 많고, 지속적으로 증가하면 분리하는 것을 고려한다. - 슈퍼타입-서브타입이 발생하는 시점이 다르면 분리한다. - 슈퍼타입-서브타입이 발생하는 시점이 같으면 통합한다. |
7. 효율적인 채번 방법을 통한 성능 향상 |
채번 테이블은 트랜잭션이 집중적으로 발생할 때, CPU자원부족으로 대기시간을 가중하고, 성능을 저하할 수 있다. 채번의 세 가지 방법 - 채번 테이블 - 테이블에 최대값 적용 : 트랜잭션이 작은 경우 추천 - 시퀀스 오브젝트 이용 : 대량의 트랜잭션인 경우 추천 |
8. 컬럼 수가 많은 테이블의 1:! 분리를 통한 성능 향상 |
한테이블에 300개 이상의 컬럼이 있는 경우가 있따. 로에 체이닝과 로우 마이그레이션이 많아지게 되어 성능이 저하된다. |
로체이닝(Row Chaining)이란?
한 행의 크기가 데이터베이스가 사용하는 데이터 블록(Block)의 크기를 초과할 때 발생
결과적으로, 행이 여러 블록에 걸쳐 저장되고, 이를 체인처럼 연결하여 관리
로마이그레이션(Row Migration)이란?
데이터가 처음에는 한 블록에 저장되었지만,
이후 업데이트로 인해 크기가 증가하면서 해당 블록에 데이터를 저장할 공간이 부족해지는 경우 발생
이런 상황에서는 행 전체가 새로운 블록으로 이동하지만, 기존 블록에는 포인터가 남아 새로운 블록의 위치를 참조
9. 대용량 테이블의 파티셔닝 적용을 통한 성능 향상 |
테이블에 많은 양의 데이터가 예상될 경우 파티셔닝을 적용하거나 PK에 의한 테이블 분할을 할 수있다. Oracle 경우 - 리스트 파티션(List Partition) - 범위 파티션(Range Partition) - 해시 파티션(Hash Partition) - 복합파티션(Composite Partition) |
10. CHAR 형식에서 개발 오류 제거 |
인덱스 대상 컬럼이 CHAR 형식인 경우 SQL WHERE 에서 인덱스를 이용하지 못해, 성능 저하 발생 |
11. 복잡한 데이터 모델 단순화를 통한 성능 향상 |
포괄적이면서, 어려운 내용이지만, 프로젝트에서 자주 발생 전문적인 수정이 필요한 경우 있음 - 엔티티가 통합되지 않고 관계가 단절된 복잡한 데이터 모델 - 변경 요청에 따른 복잡한 코드 관리 데이터 모델 |
12. 일관성있는 데이터타입과 길이를 통한 성능 향상 |
- 데이터타입과 길이가 달라짐으로 인한 성능 저하 |
13. 분산 환경 구성을 통한 성능 향상 |
배치처리, 통계성 업무, 인터넷 서비스 등 데이터베이스 분산 환경 구성을 통해 주요 업무 데이터베이스 서버에 걸리는 부하를 최소화 |
Key Insights
논리모델을 물리모델로 전환할 때, 13가지의 Point로 성능데이터모델링 검증.
Case by Case 학습 및 경험이 필요.
DB 튜닝을 SQL 관점에서만 생각(?) 할 수 있지만, 모델링 관점에서도 튜닝을 고려해서 모델링 할 수 있음.
'데이터 모델링 & DAP > 데이터베이스 설계와 구축' 카테고리의 다른 글
Ⅰ.논리설계 > 01. 데이터 모델링 주요 개념 (0) | 2025.01.25 |
---|---|
(Review) 데이터베이스 설계와 구축 - 목차 (0) | 2025.01.25 |