반응형

# SQLD 2과목_1 데이터 모델과 성능

## 성능 데이터 모델링

  • 데이터베이스 성능 향상을 목적으로, 설계단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것.
  • 데이터의 증가가 빠를수록, 성능저하에 따른 성능개선비용은 증가한다.
  • 데이터모델은 성능을 튜닝하면서 변경 될 수 있는 특징이 있다.
  • 분석/설계 단계에서 고려한 데이터 모델링을 수행할 경우 성능 저하에 따른 Rework 비용을 최소화 할 수 있는 기회를 갖게 된다.

 

## 성능을 고려한 데이터모델링 순서

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

 

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

  • 용량산정은 전체 데이터베이스에 발생되는 트랜잭션의 유형과 양을 분석하는 자료가 되므로, 성능데이터 모델링을 할 때 중요한 작업이 될 수 있다.
  • 물리적인 데이터 모델링을 할 때 PK/FK의 칼럼 순서조정, FK인덱스 생성 등은 성능향상을 위한 데이터 모델링 작업에 중요한 요소가 된다.
  • 이력데이터는 시간에 따라 반복적으로 발생되기 때문에 대량의 데이터일 가능성이 높아 특별히 성능을 고려하여 칼럼 등을 추가하도록 설계한다.
  • 중복된 데이터를 제거하면 조회능력을 향상시킬수 있다.

 

## 1차 정규화 대상

  • 중복 속성에 대한 분리 / 로우 단위의 중복 / 칼럼 단위의 중복이 되는 경우가 1차 정규화의 대상이다.

 

## 반 정규화

  • 정규화된 엔터티, 속성, 관계에 대한 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법.
  • 데이터를 중복하여 성능을 향상 시키기 위한 기법.
  • 넓은 의미의 반정규화는 성능을 향상 시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정을 의미.
  • 데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는 데이터를 조회할 때 디스크 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상되거나, 칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 반정규화를 수행한다.

 

## 칼럼의 반정규화 기법

  • 중복 칼럼 추가
  • 파생 칼럼 추가
  • 이력테이블 칼럼 추가
  • PK에 의한 칼럼 추가
  • 응용시스템 오작동을 위한 칼럼 추가

 

## 반정규화 절차

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

 

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

 

## 파티셔닝

  • 데이터 액세스 성능을 향상시키기 위해 적용하는 방법
  • 하나의 테이블에 많은 양의 데이터가 저장되면 인덱스를 추가, 테이블을 몇 개로 쪼개도 성능이 저하되는 경우가 있다. 이때 논리적으로 하나의 테이블이지만 물리적으로 여러 개의 테이블로 분리하여 데이터 액세스 성능도 향상시키고, 데이터 관리방법도 개선할 수 있도록 테이블에 적용하는 기법이다.

 

## 반정규화 대상에 대한 다른 방법으로 처리

  • 지나치게 많은 조인으로 데이터 조회 작업이 기술적으로 어려울 경우 뷰를 사용하면 해결할 수 있다.
  • 대량의 데이터 처리나 부분처리에 의해 성능이 저하된 경우 클러스터링을 적용하거나 인덱스를 조정해 성능을 향상할 수 있다.
  • 대량의 데이터는 PK의 성격에 따라 부분적인 테이블로 분리할 수 있다. 파티셔닝 기법을 적용하여 성능저하를 방지.
  • 응용 애플리케이션에서 로직을 구사하는 방법을 변경해 성능을 향상시킬 수 있다.

 

## 슈퍼/서브 타입 데이터 모델의 변환기술

  • 개별로 발생되는 트랜잭션에 대해 개별 테이블 구성
  • 슈퍼타입 + 서브타입에 대해 발생되는 트랜잭션에 대해 슈퍼타입 + 서브타입 테이블 구성
  • 전체를 하나로 묶어 트랜잭션이 발생할 경우 하나의 테이블로 구성

 

## PK순서를 결정하는 기준은 인덱스 정렬구조를 이해한 상태에서 인덱스를 효율적으로 이용할 수 있도록 PK순서를 지정해야 한다. 인덱스의 특징은 여러 개의 속성이 하나의 인덱스로 구성되어 있을 때 앞쪽에 위치한 속성의 값이 비교자로 있어야 인덱스가 좋은 효율을 나타낼 수 있다. 앞쪽에 위치한 속성 값이 가급적 '=' 아니면 최소한 범위 'BETWEEN', '<>'가 들어와야 인덱스를 이용할 수 있다.

 

## 분산 데이터베이스 장단점

  • 장점
  1. 지역 자치성, 점증적 시스템 용량 확장
  2. 신뢰성과 가용성
  3. 효용성과 융통성
  4. 빠른 응답 속도와 통신비용 절감
  5. 데이터의 가용성과 신뢰성 증가
  6. 시스템 규모의 적절한 조절
  7. 각 지역 사용자의 요구수용 증대
  • 단점
  1. 소프트웨어 개발 비용
  2. 오류의 잠재성 증대
  3. 처리 비용의 증대
  4. 설계, 관리의 복잡성과 비용
  5. 불규칙한 응답 속도
  6. 통제의 어려움
  7. 데이터 무결성에 대한 위협
반응형

+ Recent posts