[SQLD] 1-2 데이터 모델과 성능(대량 데이터)

이하영·2023년 3월 13일
0

SQLD 자격증

목록 보기
8/10

SQLD 자격증 공부하면서 정리한 내용들을 작성한 글입니다.

4. 대량 데이터에 따른 성능

(1) 성능 저하 원인과 해결 방안

  1. 한 테이블에 데이터 대량 집중
    → 테이블이 너무 커짐 / 효율성 ↓ 디스크 I/O ↑
    → 해결 방안 : 수직분할(컬럼 단위로 분할하여 I/O를 줄임)

  2. 한 테이블에 여러 컬럼 존재
    → 데스크 점유량 ↑ / 디스크 읽기 I/O ↑
    → 해결 방안 : 수직분할(컬럼 단위로 분할하여 I/O를 줄임)

  3. 대량 데이터 처리되는 테이블
    → SQL문에서 데이터 처리를 위한 I/O ↑ / 인덱스 구성
    → 해결 방안 : 파티셔닝 or PK에 의한 테이블을 분할수평분할(로우 단위로 분할하여 I/O를 줄임)

  4. 대량 데이터가 한 테이블에 존재
    → 인덱스 크기가 커져 성능 저하
    → 해결 방안 : 파티셔닝 or PK에 의한 테이블을 분할 → 수평분할(로우 단위로 분할하여 I/O를 줄임)

  5. 컬럼이 많아질 경우
    → 로우 체이닝, 로우 마이그레이션


(2) 로우 체이닝과 로우 마이그레이션

  • 로우 체이닝(한 로우를 체인처럼)

    • 행 길이가 길어서, 데이터블록 하나에 데이터를 모두 저장하지 않고,
      두 개 이상의 블록에 걸쳐 하나의 로우를 저장하는 형태
      1:1로 테이블을 분리하면 디스크 I/O가 줄어 조회 성능 향상됨
  • 로우 마이그레이션

    • 데이터블록에서 수정 발생 시, 수정된 데이터를 해당 블록에 저장하지 못하고 다른 블록에 빈 공간을 찾아 저장하는 방식
  • 파티셔닝

    • 한 테이블에 많은 데이터가 저장되면, 테이블을 아무리 쪼개도 성능이 저하되기 때문에
      논리적으로는 하나의 테이블이지만, 물리적으로는 여러 개의 테이블로 분리된 형태

(3) 수직/수평 분할 절차

  1. 데이터 모델링을 완성한다.

  2. 데이터베이스(DB) 용량산정을 한다.

  3. 대량 데이터가 처리되는 테이블에 대해서 트랜잭션 처리 패턴을 분석한다.

  4. 컬럼 or 로우 단위로 집중화된 처리가 발생하는지 분석하여 집중화된 단위로 테이블을 분리하는 것을 검토한다.

profile
안녕하세요, 웹 개발자 이하영입니다!

0개의 댓글