본문 바로가기

SQL/SQLD (개발자)

1-2. 데이터 모델과 성능_(2)반정규화와 성능, 대량 데이터에 따른 성능

제3절 반정규화와 성능

 

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

  가. 반정규화(反, 역정규화, De-Normalization)의 정의
    - 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정

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

 

2. 반정규화의 기법

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

  다. 관계 반정규화: 중복관계 추가

 

3. 정규화가 잘 정의된 데이터 모델에서 성능이 저하될 수 있는 경우
  - 1:M 관계의 테이블에서 여러개의 데이터 중 최근 데이터만 가져와야 할 경우

 

4. 정규화가 잘 정의된 데이터 모델에서 성능이 저하된 경우

  - 자주 사용하는 속성(컬럼)이 테이블에 없는 경우

 

 

제4절 대량 데이터에 따른 성능

 

1. 대량 데이터발생에 따른 테이블 분할 개요
  - 대량의 데이터가 존재하는 테이블에 많은 트랜잭션이 발생하여 성능이 저하되는 테이블 구조에  대해 수평/수직 부할 설계를 통해 성능저하를 예방함
  - 로우체이닝(Row Chaining): 로우 길이가 너무 길어서 데이터 블록 하나에 데이터가 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태
  - 로우마이그레이션(Row Migration): 데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식

 

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

  - 트랜잭션을 분석하여 적절하게 1:1 관계로 분리함으로써 성능향상이 가능

 

3. 대량 데이터 저장 및 처리로 인해 성능
  - 테이블에 많은 양의 데이터가 예상될 경우 파티셔닝을 적용하거나 PK에 의해 테이블을 분할하는 방법을 적용

  가. RANGE PARTITION 적용: 테이블이 날짜 또는 숫자값으로 분리가 가능하고 각 영역별로 트랜잭션이 분리된 경우
  나. LIST PARTITION 적용: 지점, 사업소, 사업장, 핵심적인 코드값 등으로 PK가 구성되어 있고 대량의 데이터가 있는 테이블의 경우
  다. HASH PARTITION 적용

 

4. 테이블에 대한 수평분할/수직분할의 절차
  1) 데이터 모델링을 완성한다.
  2) 데이터베이스 용량산정을 한다.
  3) 대량 데이터가 처리되는 테이블에 대해서 트랜잭션 처리 패턴을 분석한다.
  4) 칼럼 단위로 집중화된 처리가 발생하는지, 로우단위로 집중화된 처리가 발생되는지 분석하여 집중화된 단위로 테이블을 분리하는 것을 검토한다.