[SQLD] 1-2. 데이터 모델과 성능

Joy·2020년 4월 22일
1

SQL

목록 보기
5/9

2. 데이터 모델과 성능

2-1 성능데이터 모델링

성능데이터 모델링 정의

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

데이터 모델링을 할 때 어떤 작업 유형에 따라 성능 향상을 도모해야 하는지 목표를 분명하게 해야 정확한 성능 향상 모델링을 할 수 있음

수행 시점

분석/설계 단계에서 DB 처리 성능 향상 방법을 고려해야해

고려사항

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

2-2 정규화와 성능

정규화를 통해 성능 향상

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


성능에는 두 종류 있음.

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

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

2-3 반정규화와 성능

반정규화 De-Normalization

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

협의의 반정규화는 데이터를 중복하여 성능을 향상시키기 위한 기법이라고 정의할 수 있고
넓은 의미의 반정규화는 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정을 의미

데이터를 조회시 디스크 I/O량이 많거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상되거나 칼럼을 계산하여 읽을때 성능이 저하될 것이 예상되는 경우 반정규화를 수행

적용방법

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

기법

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

2-4 대량데이터에 따른 성능

대랑데이터 발생에 다른 테이블 분할

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

하나의 테이블에 많은 칼럼있으면 다 못봄. - 많은 칼럼은 로우체이닝과 로
우마이그레이션이 많아지게 되어 성능이 저하

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

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

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

가. RANGE PARTITION 적용
나. LIST PARTITION 적용
다. HASH PARTITION 적용

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

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

2-5 데이터베이스 구조와 성능

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

= Extended ER모델
업무를 구성하는 데이터의 특징을 공통과 차이점의 특징을 고려하여 효과적으로 표현
(공통은 슈퍼타입으로 모델링하고, 공통으로부터 상속받아 다른 엔터티와 차이가 있는 속성은 별도의 서브엔터티 구분)

인덱스 특성을 고려한 PK/FK DB 성능향상

★ PK/FK 칼럼 순서와 성능
PK 순서 중요! 인덱스의 특징은 여러 개의 속성이 하나의 인덱스로 구성되어 있을 때 앞쪽에 위치한 속성의 값이 비교자로 있어야 인덱스가 좋은 효율. - 앞쪽에 위치한 속성값이 가급적 ‘=‘아니면 최소한 범위 BETWEEN이 들어와야 됨

PK 의 순서를 인덱스 특징에 맞게 고려하지 않으면 테이블에 접근하는 트랜잭션의 특징에 효율적이지 않은 인덱스가 생성되어 있으므로 인덱스의 범위를 넓게 이 용하거나 Full Scan 을 유발하게 되어 성능이 저하

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

2-6 분산데이터베이스와 성능

분산데이터베이스

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

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

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

분산데이터베이스가 되기 위해서는 6가지 투명성(Transparency)을 만족해야 함.

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

적용

가. 테이블위치분산
나. 테이블분할분산 - 수평분할,수직분할
다. 테이블복제분산 - 부분복제,광역복제
라. 테이블요약분산 - 분석요약,통합요약

성능향상 사례

profile
roundy

0개의 댓글