[SQLD/P] 데이터 모델과 성능 - 참고사항

Hyo Kyun Lee·2023년 2월 27일
0

SQLD/P

목록 보기
72/82

1. 성능 데이터 모델링

  • 데이터베이스 성능 향상을 목적으로, 설계단계의 데이터 모델링부터 성능과 관련한 사항이 데이터 모델링에 반영될 수 있도록 하는 것이다.
  • 성능을 튜닝하면서 변경될 수 있다.

2. 데이터 모델링 순서

  1. 데이터 모델링시 정규화 수행
  2. 용량과 트랜잭션의 유형에 따라 반정규화 수행
  3. 데이터베이스 용량산정 수행
  4. 데이터베이스에 발생되는 트랜잭션 유형 파악
  5. 성능 관점에서 데이터 모델 검증
  6. 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 등을 조절

3. 동일한 유형의 속성이 컬럼단위로 반복될 경우

  • 분류코드 별로 index를 생성할 경우 수정, 삭제 등을 할 때 성능이 저하되어 제1정규화를 수행한 후 인덱스를 적용한다.
  • 기본적으로 중복 속성에 대한 분리가 1차 정규화이고, 1:M 관계로 형성

4. 반정규화의 고려

  • 정규화된 엔티티, 속성, 관계에 대해 시스템 성능 향상 및 개발, 운영 등의 단순화를 위해 중복/통합/분리를 수행하는 데이터 모델링 기법
  • 데이터를 의도적으로 중복시켜 성능을 향상시키는 기법
  • 무결성이 깨질 수 있으나, 데이터 조회시 디스크I/O 과다 및 경로가 멀어 성능 저하가 예상될때 반정규화 수행
  • 파티션이나 물리적으로 데이터 클러스터링 후에도 반복적으로 성능 저하가 발생한다면, 그때 반정규화를 고려(즉, 재현의 적시성으로 판단)
  • RDBMS에서는 현재 레코드를 기준으로 이전 또는 이후 위치의 레코드에 대해 접근이 window function을 통해 가능

5. 테이블 추가 - 부분 테이블 추가

  • 한 테이블에 전체 칼럼 중 자주 이용되는 집중화된 칼럼들이 모여 있을때, 디스크 I/O를 줄이기 위해 해당 칼럼들을 별도로 모아놓는 반정규화 기법

6. 반정규화 기법

테이블 반정규화

  • 테이블 병합 -> 1:1관계 테이블 병합 / 1:M관계 테이블 병합 / 슈퍼 및 서브타입 테이블 병합
  • 테이블 분할 -> 수직분할 / 수평분할
  • 테이블 추가 -> 중복테이블 추가, 통계테이블 추가, 이력테이블 추가, 부분테이블 추가

컬럼 반정규화

  • 중복칼럼 추가 : 조인감소를 위해 여러 테이블에 동일한 칼럼을 추가
  • 파생컬럼 추가 : 조회 성능을 높이기 위해 미리 계산한 칼럼을 추가, 여러 단가를 합한다고 한다면 해당 단가에 대한 자식(조회하는 곳)에 추가하는 것을 권장
  • 이력 테이블 칼럼 추가 : 최신값을 처리하는 이력테이블 특성을 고려한 기능성 칼럼 추가
  • PK에 의한 칼럼 추가
  • 응용시스템 오작동을 위한 칼럼 추가

7. 반정규화 절차

  1. 반정규화 대상조사 : 범위처리빈도수, 대량의 범위 처리, 통계성 프로세스, 테이블 조인 개수
  2. 다른 방법유도 검토 : VIEW 테이블, 클러스터링, 인덱스 조정, 응용application
  3. 반정규화 적용 : 테이블, 속성, 관계

8. 칼럼수가 많은 테이블

  • 로우체이닝이 발생할 정도로 테이블에 많은 컬럼들이 존재한다면 조회성능저하 발생한다.
  • 트랜잭션이 접근하는 컬럼 유형을 분석하여 1:1테이블로 분리하면 디스크I/O가 줄어들어 조회기능을 향상시킬 수 있다.

9. 파티셔닝

  • 하나의 테이블에 많은 데이터가 저장되면 인덱스를 추가하거나, 테이블을 몇개로 쪼개도 성능이 저하되는 경우가 많다.
  • 하나의 테이블을 물리적으로 여러 테이블로 나누어, 데이터 액세스 성능도 향상시키고 데이터 관리방법도 개선 가능

10. SQL 패턴

  • 동등(=) 조건 -> 범위 조건순으로 인덱스를 생성하는 것이 조회시 효율적이다.

11. FK와 조인

  • PK에 인덱스가 존재하나, FK에는 없을 경우 조회성능 저하 예방을 위해 FK에 대해서도 별도의 인덱스를 생성 필요

12. 데이터 분산설계

  • 마스터 데이터에 대해서는 분산DB에 모두 복제분산
  • 실시간(Near Real time) 업무적인 특성일때 분산 데이터베이스를 사용하여 구성 가능
  • 백업 사이트 구성시 활용 가능
  • GSI(Global Single Instance)는 하나의 통합된 DB로, 데이터 분산설계의 방향과 완전히 반대되는 개념

0개의 댓글