SQLD - 데이터 모델과 성능

이강민·2022년 5월 25일
0

웹 개발반 - MySQL

목록 보기
6/6
post-thumbnail

데이터 모델과 성능

성능 데이터 모델링의 개요

  • 성능 데이터 모델링의 정의

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

    • 성능에 대비한 설계를 하지 않으면 데이터의 증가가 빠를 수록 성능개선비용은 기하급수적으로 증가한다.
    • 분석/설계 단계 때부터 성능에 대비한 설계를 한다.
  • 성능 데이터 모델링 고려사항

    • 데이터 모델링을 할 때 정규화를 정확하게 수행한다.
    • 데이터베이스 용량산정을 수행한다.
    • 데이터베이스에 발생되는 트랜젝션의 유형을 파악한다.
    • 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.
    • 이력모델의 조정, PK/FK조정, 슈퍼타입/서브타입 조정 등을 수행한다.
    • 성능관점에서 데이터모델을 검증한다.

정규화와 성능

정규화는 최소한의 데이터 중복, 데이터의 일관성, 최대한의 데이터 유연성을 위해 데이터를 분해하는 과정이다. 이 과정을 통해 데이터 중복을 제거하고 데이터 모델의 독립성을 확보하는 방법이다.
(1~5정규화까지 있으나 실질적으로 3정규화까지 실시)

  • 제 1정규화

    • 모든 속성은 반드시 하나의 값, 속성값 중복을 제거한다.
    • 속성의 원자성을 확보하며 PK를 설정한다.
  • 제 2정규화

    • PK가 2개 이상의 속성으로 이루어진 경우 부분 함수 종속성을 제거한다.
    • 식별자에 종속되지 않는 속성의 중복 제거
    • 식별자가 아닌 모든 속성은 식별자 전체 속성에 완전 종속한다.
  • 제 3정규화

    • PK를 제외한 칼럼 간 종속성을 제거한다.
    • 2차 정규형을 만족하고 식별자 외 일반 컬럼간의 종속 존재 제거

반정규화와 성능

  • 데이터 조회할 때 디스크 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능 저하가 예상될 때
  • 칼럼을 계산하여 읽을때 성능이 저하될 것이 예상되는 경우 반정규화를 수행한다.
  • 반정규화를 적용할 때 기본적으로 무결성이 깨질 가능성이 큼으로 무결성을 보장할 수 있는 방법을 생각한다.
  • 반정규화 전에 테이블 추가를 하지 않는다.

반정규화 대상

  • 자주 사용되는 테이블에 접근하는 프로세스 수가 많고 항상 일정한 범위만을 조회하는 경우
  • 테이블의 대량의 데이터가 있고 대량의 데이터 범주를 자주 처리하는 경우에 처리범위를 일정하게 줄이지 않으면 성능을 보장 할 수 없는 경우
  • 통계성 프로세스에 의해 통계 정보를 필요로 할 때 별도의 통계 테이블을 생성하는 경우
  • 테이블에 지나치게 많은 JOIN이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우

대량 데이터에 따른 성능

설계가 잘 된 데이터 모델이어도 대량의 데이터가 하나의 테이블에 집약되어, 하나의 하드웨어 공간에 저장되어 있으면 성능이 저하된다.

성능 저하의 원인

  • SQL 문장에서 데이터를 처리하기 위한 I/O량이 증가하기 때문이다.
  • 많은 칼럼은 로우체이닝과 로우마이그레이션이 많아지게 되어 성능이 저하된다.
    • 로우체이닝
      • Row 길이가 너무 길어서 데이터 블록 하나에 데이터가 모두 저장되지 않고, 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태
    • 로우마이그레이션
      • 데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고, 다른 블록의 빈 공간을 찾아 저장하는 방식

성능 개선 방법

한 테이블에 많은 수의 칼럼을 가지고 있는 경우

  • 어떤 칼럼에 대해 집중적으로 발생하는지 분석하여 테이블을 쪼개어 주면 디스크 I/O가 감소하게 되어 성능이 개선되게 된다.
  • 트랜젝션을 분석하여 적절하게 1:1 관계로 분리함으로써 성능 향상이 가능하도록 해야 한다.

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

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

파티셔닝 적용

  • Range Partition 적용
    • 대상 테이블이 날짜 또는 숫자 값으로 분리가 가능하다.
    • 각 영역별로 트랜잭션이 분리된다면 사용한다.
    • 데이터 보관 주기에 따라 테이블에 데이터를 쉽게 지우는게 가능하여 관리에 용이.
  • List Partition 적용
    • 핵심적인 코드값으로 PK가 구성되고, 대량의 데이터가 있는 테이블이라면 값 각각에 의해 파티셔닝이 되는 List Partition을 적용한다.
    • 대용량 데이터를 특정 값에 따라 분리/저장 가능함
    • 쉽게 삭제하는 기능은 제공될 수 없다.
  • Hash Partition 적용
    • 지정된 Hash 조건에 따라 해쉬 알고리즘이 적용되며 테이블이 분리, 설계자는 테이블의 데이터가 정확하게 어떻게 들어갔는지 알 수 없다.
    • 주로 성능향상을 위해 사용된다.
    • 쉽게 삭제하는 기능은 제공하지 않는다.

데이터량이 대용량이 되면 파티셔닝의 적용은 필수적이며 조건에 따라 적절한 파티셔닝 방법을 선택하여 성능을 향상한다.

분산 데이터베이스와 성능

분산 데이터베이스 정의

  • 여러 곳으로 분산되어 있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터 베이스
  • 논리적으로 동일한 시스템에 속하지만 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터들의 모임

분산 데이터베이스의 투명성(Transparency)

분산 데이터베이스 투명성 내용
분할 투명성(단편화) 하나의 논리적 Relation이 여러 단편으로 분할되어 각 단편의 사본이여러 site에 저장
위치 투명성 사용하려는 데이터 저장 명소 명시불필요, 위치 정보가 System Catelog에 유지되어야 함
지역 사상 투명성 지역 DBMS와 물리적 DB사이의 Mapping보장, 각 지역시스템 이름과 무관한 이름 사용 가능
중목 투명성 DB 객체가 여러 site에 중복 되어있는지 알 필요가 없는 성질
장애 투명성 구성요소(DBMS, Computer)의 장애에 무관한 트랜잭션의 원자성 유지
병행 투명성 다수 트랜잭션 동시 수행 시 결과의 일관성 유지, Time Stamp, 분산 2단계 Locking을 이용 구현

분산 데이터베이스 목적과 가치

통합된 데이터베이스에서 제공할 수 없는 빠른 성능을 제공한다.
네트워크 부하 및 트랜잭션 집중에 따른 성능 저하의 원인을 분산 데이터베이스 환경을 구축하여 빠른 성능을 제공 할 수 있다.

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

  • 데이터베이스 분산 종류
    • 테이블 위치 분산
      • 위치 분산은 테이블의 구조는 변하지 않는다.
      • 테이블이 다른 데이터베이스에 중복되어 생성되지도 않는다.
      • 설계된 테이블이 각각 지역별로 분산되어 생성되는 경우
      • 각각 테이블마다 위치를 표기하여 테이블을 생성한다.
    • 테이블 분할 분산
      • 각각의 테이블을 쪼개어 분산하는 방법
      • 수평분할 : 테이블을 row단위로 분리
        • column은 분리되지 않는다.
        • 한군데 집합시켜도 pimary key에 의해 중복이 발생하지 않는다.
      • 수직분할 : 테이블을 column단위로 분할
        • row단위로는 분리되지 않는다.
        • 동일한 pimarykey는 하나로 표현하면 됨으로 데이중복이 되지않는다.
    • 테이블 복제 분산
      • 부분 복제
        • 데이터베이스에서 테이블의 일부의 내용만 다른 지역이나 서버에 위치
        • 여러 테이블에 join이 발생하지 않는 빠른 작업 수행이 가능
        • 본사와 지사간에 데이터의 중복이 항상 발생
        • 데이터를 복제하는데 시간이 소요, 서버에 부하 발생
      • 광역 복제
        • 데이터베이스의 테이블의 내용을 각 지역이나 서버에 존재시킨다.
        • 본사에서 데이터가 입력, 수정, 삭제되어 지사에서 이용하는 방식
    • 테이블 요약 분산
      • 요약의 방식에 따라 동일한 테이블 구조를 가지고 있으면서 분산되어 있는 동일한 내용의 데이터를 이용하여 통합된 데이터를 산출하는 방식(분석요약)
      • 분산되어 있는 다른 내용의 데이터를 이용하여 통합된 데이터를 산출하는 방식의 통합요약이 있다.

분산 데이터베이스의 적용

  • 성능이 중요한 사이트에 적용
  • 공통코드, 기준정보, 마스터 데이터 등에 대해 분산환경을 구성하면 성능이 좋아진다.
  • 실시간 동기화가 요구되지 않을 때 좋다.
  • 특정 서버에 부하가 집중이 될 때 부하를 분산할 때도 좋다.
  • 백업 사이트를 구성할 때 간단하게 분산기능을 적용하여 구성할 수 있다.
profile
AllTimeDevelop

0개의 댓글

관련 채용 정보