데이터베이스 설계와 구축 - 성능까지 고려한 데이터 모델링 Part 2 물리설계
Chapter 8. 성능 데이터 모델링
1. 정규화를 통한 성능 향상
- 두 개의 엔티티타입이 통합되어 반정규화된 경우
* 대량으로 존재하는 데이터에서 조인 조건이 되는 대상을 찾기 인라인 뷰를 사용함으로써 성능이 저하되는 사례
- 두 개의 속성을 나열하여 반정규화한 경우
* 기본적으로 정규화를 사용하여 모델링을 전개하고 업무적으로 발생시키는 트랜잭션 성격, 분산 환경등에 대한 조건에 따라 반정규화를 적용
2. 반정규화를 통한 성능 향상
- 정규화가 잘 정의된 데이터모델에서 성능이 저하된 경우
* 데이터베이스 서버가 여러 대인 경우, 서버가 분리되어 분산 데이터베이스 시스템이 구성되어 있을 경우 반정규화를 통해 성능을 향상 시킬수 있음
3. PK 순서 조정을 통한 성능 향상
- PK순서를 잘못 지정하여 성능이 저하된 경우(간단한 오류)
* 테이블 풀스캔이 발생되어 성능이 저하될 때 빈번하게 들어오는 PK에 따라 순서를 변경해줌으로써 인덱스를 이용할 수 있게 함
- PK순서를 잘못 지정하여 성능이 저하된 경우(복잡한 오류)
* 기존 PK구조를 그대로 두고 인덱스 추가 생성으로 성능은 개선될 수 있으나 사용되지 않으면 오히려 성능 저하를 일으킨다.
4. FK 인덱스 생성을 통한 성능 향상
- 물리적인 테이블에 FK 제약이 걸려있을 경우 인덱스 미생성으로 성능 저하
* FK연쇄삭제 제약이 걸려있음에도 불구하고 테이블에 사원번호 인덱스가 없어서 테이블 전체에 대해 풀 테이블 스캔이 발생한 경우
- 물리적인 테이블에 FK 제약이 걸려있지 않을 경우 인덱스 미생성으로 인한 성능 저하
* 물리적인 테이블에 FK제약이 걸려있을 때는 반드시 FK인덱스를 생성하고 FK제약이 걸리지 않았을 경우 FK인덱스를 생성하는 것을 기본정책으로 함
5. 이력모델의 구분과 기능성 컬럼을 통한 성능 향상
- 발생이력, 변경이력의 경우 최신 값에 대한 기능성 컬럼이 존재하지 않아 성능 저하
* 이력 테이블에 최신여부 컬럼(기능성 컬럼)을 추가하여 데이터 입력,수정,삭제 시 이 컬럼을 고려하여 성능 저하 현상을 방지
- 진행 이력의 경우 시작과 종료에 대한 기능성 컬럼이 존재하지 않아 성능 저하
* 적용종료일자라는 기능성 컬럼을 추가함으로써 SQL구문 단순화되고 이전 모델이 비해 성능도 훨씬 빨라짐
6. 슈퍼타입/서브타입 구분을 통한 성능 향상
- 개별적으로 발생되는 트랜잭션에 대해서는 개별 테이블로 구성
* 독립적으로 트랜잭션이 발생되면 슈퍼/서브 타입에 각각 필요한 속성 및 데이터 타입만 갖도록 분리하여 1:1 관계로 만든다.
- 슈퍼타입+서브타입에 대해 발생되는 트랜잭션에 대해서는 슈퍼타입+서브타입 테이블로 구성
* 묶어서 별도의 테이블로 구성하는 것이 효율적임
- 전체를 하나로 묶어 트랜잭션이 발생할 때는 하나의 테이블로 구성
7. 효율적인 채번 방법을 통한 성능 향상
- 채번 테이블 사용으로 인한 성능 저하
* 일련번호 체계를 사용하는 데이터 모델에서 반드시 채번(PK값을 증가하는 번호형식으로 저장하는 것)을 하는데 이로 인해 성능 저하가 발생
* 채번의 세가지 방법
8. 컬럼수가 많은 테이블의 1:1 분리를 통한 성능 향상
- 컬럼 수가 많으므로 인해 발생하는 성능 저하
9. 대용량 테이블의 파티셔닝 적용을 통한 성능 향상
- 범위 파티션 적용
* 대상 테이블이 날짜 또는 숫자값으로 분리 가능
- 리스트 파티션 적용
* 핵심 코드값으로 PK가 구성되어 있고 대량 데이터가 있는 테이블이라면 각 값에 의해 파티셔닝 되는 리스트 파티션을 적용
10. CHAR 형식에서 개발 오류를 제거를 통한 성능 향상
- CHAR로 지정된 인덱스 컬럼 변형으로 인한 성능 저하
11. 복잡한 데이터 모델 단순화를 통한 성능 향상
- 엔티티타입이 통합되지 않고 관계가 단절된 복잡한 데이터 모델
* 불필요한 엔티티타입이 중복되어 데이터 입력, 수정, 삭제 시 성능 저하가 예상되며 정확한 관계가 없어 조인 시 성능 저하도 예상됨
- 변경 요청에 따른 복잡한 코드 관리 데이터 모델
* 관계에서 정보 추적성을 보장하고 적절하게 통합되어 데이터베이스의 성능을 향상시킨다.
12. 일관성있는 데이터타입과 길이를 통한 성능 향상
- 데이터타입과 길이가 달라짐으로 인한 성능 저하
* 각 속성의 데이터타입과 길이를 직접 지정하면 컬럼의 일관성이 결여되는 경우가 많음
* 가급적으로 도메인을 정의하여 각 속성에는 도메인을 할당하는 형식으로 진행하는 것이 데이터베이스의 일관성과 성능저하를 예방 할 수 있음
13. 분산 환경 구성을 통한 성능 향상
- 인터넷 환경에서 분산 환경 구성을 통한 성능 향상
* 서버 다운의 위험을 방지하기 위해 서버를 분리하여 데이터베이스를 구성
- LDAP 서버에서의 사용자 정보 복제를 통한 성능 향상
* LDAP는 시스템 권한 관리를 빠르고 효율적으로 할 수 있도록 디렉토리 구조 형식으로 데이터를 가지고 있으면서 서비스하는 패키지 소프트웨어
'[STUDY] DB모델링 설계 및 구축 실무과정' 카테고리의 다른 글
데이터베이스 설계와 구축 2부 물리 설계 - 10. SQL (0) | 2020.04.03 |
---|---|
데이터베이스 설계와 구축 2부 물리 설계 - 9. 데이터베이스 구축 (0) | 2020.04.03 |
데이터베이스 설계와 구축 2부 물리 설계 - 7. 데이터베이스 구축 준비 (0) | 2020.04.02 |
데이터베이스 설계와 구축 1부 논리 설계 -6. 모델 검토 (0) | 2020.04.02 |
데이터베이스 설계와 구축 1부 논리 설계 - 5. 상관 모델링 (0) | 2020.04.02 |