제2장 데이터 모델과 성능
- 제1절 성능 데이터 모델링의 개요
- 제2절 정규화와 성능
- 제3절 반정규화와 성능
- 제4절 대량 데이터에 따른 성능
- 제5절 데이터베이스 구조와 성능
- 제6절 분산 데이터베이스와 성능
성능데이터모델링이란 ?
- 데이터베이스 성능 향상을 목적으로 설계단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것
- 데이터의 증가가 빠를수록 성능저하에 따른 성능개선비용 증가
- 데이터모델은 성능을 튜닝하면서 변경이 될 수 있음
- 분석/설계 단계에서 성능을 고려한 데이터모델링을 수행할 경우 성능 저하에 따른 Rework비용을 최소화할 수 있는 기회를 가지게 됨
성능 데이터 모델링 고려사항 순서
- 데이터모델링을 할 때 정규화를 정확하게 수행
- 데이터베이스 용량 산정
- 데이터베이스의 발생되는 트랜잭션의 유형 파악
- 용량과 트랜잭션 유형에 따라 반정규화 수행
- 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정
- 성능 관점에서 데이터 모델 검증
(-) 정규화
- 반복적인 데이터를 분리하고 각 데이터가 종속된 테이블에 적절하게 배치되도록 하는 것
- 1차 정규화 : 같은 성격, 내용 컬럼이 연속될 때 컬럼 제거, 테이블 생성
- 2차 정규화 : PK 복합키 구성일 때 부분적 함수 종속 관계 테이블 분리
- 3차 정규화 : PK가 아닌 일반컬럼에 의존하는 컬럼 분리
(+) 반정규화
- 정규화된 엔티티, 관계, 속성에 대해 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법
- 조회 시 디스크 I/O가 많거나 경로가 멀어 조인에 의한 성능 저하를 막기 위해 수행 (테이블 추가 -> 부분 테이블추가)
정규화 시 입력/삭제/수정 성능이 향상, 반정규화시 조인 성능 향상
칼럼의 반정규화
- 중복칼럼 추가 - 조인감소를 위해 여러 테이블에 동일한 칼럼을 갖도록 함
- 파생칼럼 추가 - 조회 성능을 우수하게 하기 위해 미리 계산된 칼럼을 갖도록 함
- PK에 대한 속성 추가 - PK관계에 해당하는 속성을 추가하여 조인성능을 높임
- 이력테이블에 기능 칼럼 추가 - 최산값을 처리하는 이력의 특성을 고려하여 기능성 칼럼 추가
반정규화 대상에 대해 다른 방법으로 처리
- 지나치게 많은 조인이 걸려 데이터를 조회하는 작업이 어려운 경우 : 뷰(View) 사용
- 대량의 데이터처리나 부분처리에 의해 성능이 저하되는 경우 : 인덱스 조정 및 클러스터링 적용
- 하나의 테이블에 많은 데이터가 저장되었는데, 인덱스를 추가하고 테이블을 쪼개도 성능이 저하되는 경우 : 파티셔닝 적용(논리적으로는 하나의 테이블이지만, 물리적으로는 여러 개의 테이블로 분리하는 기법) -> 액세스 성능 향상, 데이터 관리방법 개선
- 로우체이닝 발생 시 : 트랜잭션이 접근하는 칼럼유형을 분석하여 테이블을 1:1로 분리함으로써, 디스크 I/O 개선
슈퍼/서브 타입 모델
- 업무를 구성하는 데이터를 공통과 차이점의 특징을 고려하여 효과적으로 표현
논리적 모델
- 슈퍼 타입 : 공통부분
- 서브 타입 : 공통으로부터 상속받아 다른 엔터티와 차이가 있는 속성
슈퍼/서브 타입 데이터 모델의 변환기술
- 개별로 발생되는 트랜잭션에 대해서는 개별 테이블로 구성
- 슈퍼타입 + 서브타입에 대해 발생되는 트랜잭션에 대해서는 슈퍼타입+서브타입 테이블로 구성
- 전체를 하나로 묶어 트랜잭션이 발생할 경우 하나의 테이블로 구성
UNION/UNION ALL로 인한 성능 저하
- 해결방안 : 하나의 테이블로 통합하고 PK체계나 일반속성에 구분자 부여
인덱스 특성을 고려한 PK/FK DB 성능향상
- 인덱스의 특징은 여러 개의 속성이 하나의 인덱스로 구성되어 있을 때, 앞쪽에 위치한 속성의 값이 비교자(EQUAL)로 있어야 좋은 효율을 나타낼 수 있음
- 앞쪽에 위치한 속성값이 "=" or "Between" or "<>"가 들어와야 인덱스를 이용할 수 있음
분산 데이터베이스
- 여러 곳으로 분산되어 있는 DB를 하나의 가상 시스템으로 사용할 수 있도록 한 DB
- 논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터 집합
분산 데이터베이스의 장단점
- 장점 : 지역 자치성, 점층적 시스템 용량 확장, 신뢰성과 가용성, 효용성과 융통성, 빠른 응답 속도와 통신비용 절감, 각 지역 사용자 요구 수용
- 단점 : 소프트웨어 개발 비용 증가, 오류의 잠재성 증대, 처리 비용의 증대, 설계 관리의 복잡성, 불규칙한 응답 속도, 데이터 무결성에 대한 위협
분산 데이터베이스 설계를 고려해야 하는 경우
- 성능이 중요한 사이트
- 공통 코드, 기준정보, 마스터 데이터 -> 복제 분산을 이용하여 성능 개선
- 실시간 업무적인 특성을 가지고 있는 경우
- 백업 사이트를 구성할 경우
'SQL' 카테고리의 다른 글
[sqld] SQL 자격검정 실전문제 핵심정리 (4장 SQL 활용) (6.10 시험 대비용 정리) (2) | 2023.06.09 |
---|---|
[sqld] SQL 자격검정 실전문제 핵심정리 (3장 SQL 기본) (6.10 시험 대비용 정리) (2) | 2023.06.09 |
[sqld] SQL 자격검정 실전문제 핵심정리 (1장 데이터 모델링의 이해) (6.10 시험 대비용 정리) (0) | 2023.06.06 |