자격증/SQLD

SQLD / 과목 1 / 제 2장 데이터 모델과 성능 / 대량 데이터에 따른 성능

CBJ 2023. 3. 8. 10:22

1. 대량 데이터발생에 따른 테이블 분할 개요

대량의 데이터가 존재하는 테이블에 많은 트랜잭션이 발생하여 성능이 저하되는 테이블 구조에 대해 수평/수직 분할 설계를 통해 성능 저하를 예방할 수 있음.

 

로우체이닝(Row Chaining)

로우 길이가 너무 길어서 데이터 블록 하나에 데이터가 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태

 

로우마이그레이션(Row Migration)

데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지  못하고 다른 블록의 빈 공간을 찾아 저장하는 방식

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

로우 체이닝과 로우 마이그레이션이 발생하여 많은 블록에 데이터가 저장되면 DB 메모리에서 디스크 I/O가 발생할 때 많은 I/O가 발생하여 성능저하 발생트랜잭션을 분석하여 적절하게 1:1 관계로 분리함으로써 성능향상이 가능하도록 해야 한다.

3. 대량 데이터 저장 및 처리

논리적으로는 하나의 테이블로 보이지만 물리적으로 여러 개의 테이블스페이스에 쪼개어 저장될 수 있는 구조의 파티셔닝을 적용한다.

 

PK에 의해 테이블을 분할하는 방법

  • RANG PARTITION
    대상 테이블이 날짜 또는 숫자값으로 분리가 가능하고 각 영역별로 트랜잭션이 분리되는 경우
  • LIST PARTITION
    지점, 사업소, 핵심적인 코드 값으로 PK가 구성되어 있으며 대량의 데이터가 있는 테이블의 경우
  • HASH PARTITION
    지정된 HASH 조건에 따라 해시 알고리즘이 적용되어 테이블이 분리

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

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