River.log
로그인
River.log
로그인
[SQLD]2장 -1. 성능 데이터 모델링의 개요
Yu River
·
2022년 7월 28일
팔로우
0
0
SQL전문가가이드
목록 보기
6/34
(1) 성능 데이터 모델링의 정의
데이터베이스 성능향상을 목적으로 설계단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블통합, 테이블분할, 조인구조, PK, FK 등 여러 가지 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것이다.
정규화
반정규화
테이블 통합
테이블 분할
조인 구조
제약 조건 (PK , FK)
(1-1) SQL구문을 잘못 구성하여 성능이 저하되는 경우도 있지만 근본적으로 설계가 잘못되어 SQL구문을 잘못 작성되도록 구성될 수밖에 없는 경우도 빈번하게 발생한다.
(1-2) 성능이 저하되는 데이터 모델 세 가지 경우
데이터 모델 구조에 의해 성능이 저하되는 경우
데이터가 대용량이 됨으로 인해 불가피하게 성능이 저하
인덱스 특성을 충분히 고려하지 않고 인덱스를 생성함으로 인해 성능이 저하
(2) 성능 데이터 모델링 수행시점 (
31
)
(2-1) 성능 향상을 위한 비용
프로젝트 수행 중에 있어서 사전에 할수록 비용이 들지 않음
특히 분석/설계 단계에서(
31
) 데이터 모델에 성능을 고려한 데이터 모델링을 수행할 경우 성능저하에 따른 재업무(Rework) 비용을 최소화 할 수 있다.
(2-2) 추가적인 비용을 소진하게 하는 원인
분석/설계단계에서 데이터 모델을 설계하는 경우
성능이 저하되는 SQL문장을 튜닝
부족한 하드웨어 용량(CPU, Memory 등)을 증설
데이터의 증가가 빠를수록 성능저하에 따른 성능 개선 비용은 기하급수적으로 증가(
31
)
(2-3) 분석/설계 단계에서 데이터베이스 처리 성능을 향상시킬 수 있는 방법
프로젝트 초기에 운영환경에 대비한 테스트 환경을 구현
트랜잭션을 발생시켜 실제 성능을 테스트
데이터 모델의 구조도 변경하면서 어떠한 구조가 해당 사이트에 성능상 가장 적절한 구조인지를 검토하여 성능이 좋은 모습으로 디자인
데이터 모델은 튜닝하면서 변경될 수 있다.
(2) 성능 데이터 모델링 고려사항
(2-1) 성능 데이터 모델은 프로세스 진행(
32
)
(2-1-1) 데이터 모델링을 할 때 (
?
)정규화를 정확하게 수행한다
정규화된 모델이 데이터를 주요 관심사별로 분산시키는 효과 >> 그 자체로 성능을 향상시킨다.
(2-1-2) 정규화가 완성된 모델
데이터 모델의 각각의 엔터티에 어느 정도 (
?
)트랜잭션이 들어오는지 살펴본다.
가장 좋은 방법이 엔터티에 대한 (
?
)용량산정
어떤 엔터티(테이블)에 데이터가 집중되는지 파악
엔터티별로 데이터가 대용량인지를 구분하게 하기 때문에 테이블에 대한 성능고려를 엄격하게 적용해야 하는지 기준)
(2-1-3) 데이터 모델에 발생되는 트랜잭션의 유형을 파악
CRUD 매트릭스를 보고 파악
객체지향 모델링을 적용한다면 시퀀스 다이어그램을 보면
트랜잭션의 유형을 파악하기에 용이
화면에서 처리된 데이터의 종류들을 보면 이벤트(입력, 수정, 삭제, 조회)에 따라 테이블에 데이터가 어떻게 처리되는지를 유추
SQL문장의 조인관계 테이블에서 데이터조회의 칼럼들을 파악하여 그에 따라 성능을 고려한 데이터 모델을 설계한다.
2-1-2 단계의 용량산정은 트랜잭션의 유형과 양을 분석하는 자료가 됨(
34
)
(2-1-4) 반정규화 적용
용량산정과 트랜잭션의 유형데이터를 근거로 정확하게 테이블에 대해 (
?
)반정규화를 적용
테이블, 속성, 관계에 대해 포괄적인 반정규화의 방법을 적용
(2-1-5) PK/FK 칼럼 순서 조정
대량 데이터가 처리되는 이력모델에 대해 성능고려
반드시 PK/FK를 성능이 우수한 순서대로 칼럼의 순서를 조정한다.
PK/FK의 순서가 인덱스 특성에 따라 성능에 영향을 미치는 영향도가 크기 때문이다.
이력 데이터는 대량 데이터 가능성이 높아 성능을 고려해 (
?
) 칼럼 등을 추가하도록 설계해야함(
34
)
(2-1-6) 데이터 모델 검토
전체적으로 성능에 대한 충분한 고려가 되었는지를 데이터 모델 검토를 통해 다시 한 번 확인
데이터 모델 검토 시에 일반적인 데이터 모델 규칙만을 검증하지 말고 충분하게 성능이 고려되었는지를 체크리스트에 포함하여 검증한다.
(2-2) 성능 데이터 모델링 프로세스 요약
(
32
)(
?
) 정규화 -> 엔티티 용량 -> 트랜잭션/유형(컬럼): 성능 고려 데이터 모델 설계 -> 반정규화 -> 이력/pk -> (
?
) 검증"
Yu River
도광양회(韜光養晦) ‘빛을 감추고 어둠속에서 힘을 기른다’
팔로우
이전 포스트
[SQLD]1장 데이터 모델링의 이해-5. 식별자
다음 포스트
[SQLD]2장 -2. 정규화와 성능
0개의 댓글
댓글 작성