[SQLD]2장 -1. 성능 데이터 모델링의 개요

Yu River·2022년 7월 28일
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 -> (?) 검증"
profile
도광양회(韜光養晦) ‘빛을 감추고 어둠속에서 힘을 기른다’

0개의 댓글