데이터 모델링 & DAP/데이터베이스 설계와 구축

2부. 물리 설계 > 8장. 성능 데이터 모델링

ByteCraft 2025. 1. 27. 00:21
성능 데이터 모델링 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 관점에서만 생각(?) 할 수 있지만, 모델링 관점에서도 튜닝을 고려해서 모델링 할 수 있음.