[SQLD] 성능데이터 모델링

dohyun-dev·2023년 3월 13일
1

성능 데이터 모델링

성능 데이터 모델링의 정의

성능 데이터 모델링이란 데이터베이스 성능향상을 목적을 설계단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블 통합, 테이블분할, 조인구조, PK, FK 등 여러 가지 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것

  • 작업 유형에 따라 성능향상을 도모해야하는지 목표를 분명하게 해야 정확한 성능향상 모델링을 할 수 있다

성능 데이터모델링 수행 시점

분석/설계 단계에서 데이터베이스 처리 성능을 향상시킬 수 있는 방법을 고려해야 한다.

성능 데이터모델링 고려사항

  • 정규화
  • 용량정산
  • 트랜잭션 유형 파악
  • 용량, 트랜잭션 유형에 따라 반정규화
  • 조정 및 데이터 모델 검증

정규화와 성능

정규화를 통한 성능향상 전략

  • 데이터 중복성 제거
  • 정규화가 잘되어있으면 입력/수정/삭제의 성능이 향상되고 반정규화를 많이 하면 조회의 성능이 향상
  • 중복 속성에 대한 분리가 1차 정규화의 정의. 로우 단위의 대상, 컬럼 단위로 중복도 해당

함수적 종속성에 근거한 정규화 수행 필요

  • 함수의 종속성(Functional Dependency)은 데이터들이 어떤 기준값에 의해 종속되는 현상을 지칭하는 것이다
  • ex) 결정자 : 주민번호, 종속자 : 이름, 출생지

정규화 과정

https://itwiki.kr/w/데이터베이스_정규화

  • 1NF : 도메인이 원자값이어야함
  • 2NF : 부분적 함수 종속 제거 → 완전 함수 종속
  • 3NF : 이행적 함수 종속 제거
  • BCNF : 결정자이면서 후보키가 아닌 것을 제거

반정규화와 성능

정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법

반정규화 적용방법

  • 반정규화 대상 조사
  • 다른 방법 유도 검토
  • 반정규화 적용

반정규화 기법

  1. 테이블 반정규화
    • 테이블 병합
    • 테이블 분할
    • 테이블 추가
  2. 컬럼 반정규화
    • 중복 칼럼 추가
    • 파생 칼럼 추가
    • 이력 테이블 칼럼 추가
    • PK에 의한 칼럼 추가
    • 응용시스템 오작동을 위한 칼럼 추가
  3. 관계 반정규화
    • 중복 관계 추가

대량데이터에 따른 성능

대량데이터 발생에 따른 테이블 분할

일의 처리되는 양이 한군데에 몰리는 현상은 어떤 업무에 있어서 중요한 업무에 해당되는 데이터가 특정 테이블에 있는 경우에 발생 이 경우 트랜잭션이 분산 처리될 수 있도록 테이블 단위에서 분할의 방법을 적용할 필요

  • 로우 체이닝(Row Chaining) : 로우 길이가 너무 길어서 데이터블록하나에 데이터가 모두 저장되지 않고 두개 이상 저장
  • 로우 마이그레이션(Row Migration) : 데이터블록에서 수정이 발생하면 수정된 데이터를 해당 데이터블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식

대량 데이터 저장 및 처리로 인한 성능

많은 양의 데이터가 예상될 경우 파티셔닝을 적용하거나 PK에 의해 테이블을 분할하는 방법을 적용

  • RANGE PARTITION 적용
  • LIST PARTITION 적용
  • HASH PARTITION 적용

테이블 수평/수직 분할 절차

  1. 데이터 모델링 완성 / DB 용량 산정
  2. 대량 데이터 테이블에 트랜잭션 처리 분석
  3. 칼럼 or 로우 단위 집중화 발생 분석 - 분리 검토

데이터베이스 구조와 성능

슈퍼타입/서브타입 모델의 성능고려방법

  • Extended ER모델 : 업무를 구성하는 데이터의 특징을 공통과 차이점의 특징을 고려하여 효과적으로 표현할 수 있기 때문에 자주 쓰임
  • 공통은 슈퍼타입으로 모델링, 공통으로부터 상속받아 다른 엔터티와 차이가 있는 속성을 별도의 서브엔터티 구분

인덱스 특성을 고려한 PK/FK 데이터베이스 성능 향상

  • PK/FK 칼럼 순서와 성능
    • 인덱스의 특징은 여러 개의 속성이 하나의 인덱스로 구성되어 있을 때 앞쪽에 위치한 속성의 값이 비교자로 있어야 인덱스가 좋은 효율을 나타낼 수 있다.
    • 앞쪽에 위치한 속성의 값이 비교자로 있어야 인덱스가 좋은 효율을 나타낼 수 있다.
  • PK 칼럼의 순서를 조정하지 않으면 성능이 저하되는 이유
    • PK의 순서를 인덱스 특징에 맞게 고려하지 않고 바로 그대로 생성하게 되면 테이블에 접근하는 트랜잭션의 특징에 효율적이지 않은 인덱스가 생성되어 있으므로 인덱스의 범위를 넓게 이용하거느 Full Scan을 유발하게 되어 성능이 저하된다

물리적인 테이블에 FK 제약이 걸려있지 않을 경우 인덱스 미생성으로 성능저하

물리적인 테이블에 FK 제약 걸었을 때 반드시 FK 인덱스를 생성하도록 하고 FK 제약이 걸리지 않았을 경우에는 FK 인덱스를 생성하는 것을 기본 정책으로 하되 발생되는 트랜잭션에 의해 거의 활용되지 않았을때에만 FK 인덱스를 지우는 방법

분산 데이터베이스와 성능

데이터베이스를 연결하는 빠른 네트워크 환경을 이용하여 데이터베이스를 여러 지역 여러 노드로 위치시켜 사용성/성능 등을 극대화시킨 데이터베이스

분산 데이터베이스의 투명성

  • 분할
  • 위치
  • 지역 사상
  • 중복
  • 장애
  • 병행

분산 데이터베이스의 적용기법

  • 테이블 위치 분산
  • 테이블 분할 분산
    • 수평분할
    • 수직분할
  • 테이블 복제 분산
    • 부분복제
    • 광역복제
  • 테이블 요약 분산
    • 분석요약
    • 통합요약

0개의 댓글