1 minute read

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

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

문제점

  • 대량의 데이터가 하나의 테이블에 집약되어 있고 하나의 하드웨어 공간에 저장되어 있으면 성능저하를 피하기 힘듬.

  • 인덱스 또한 트리가 커지고 깊이가 깊어져 조회 성능에 영향을 미침

  • 입력, 수정, 삭제 트랜잭션의 경우도 특성상 작업량이 증가하며 , 더많은 성능저하를 유발.

  • 칼럼이 많아지면 물리적인 디스크의 여러 블록에 걸쳐 저장되므로 Row 길이가 길어 로우체닝과 로우 마이그레이션이 많아 짐 -> 성능저하


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

  • 200개의 컬럼을 가진 도서정보 테이블일 경우 하나의 로우 길이가 10K이고 블록이 2K로 쪼개져 있으면, 한 로우는 5개의 블록에 걸쳐 저장된다.

  • 이런 경우 칼럼 분할 반정규화를 수행.

3. 대량 데이터 저장 및 처리로 인한 성능

  • 대량 데이터가 예상될때, 파티셔닝 및 PK 에 의해 테이블 분할 하는 방법을 적용할 수 있다.

  • 오라클의 경우 List Partition, Range Partition, Hash Partition, Composite Partition 방법 가능

  • Range Partition ( 가장 많이 사용하는 파티셔닝 기법)

    • 요금정보 처럼 항상 월단위로 데이터를 처리하는 특성을 가졌다면, 월별로 12개의 파티션테이블로 분할하여 성능개선 유도

    • 대상 테이블이 날짜 또는 숫자값으로 분리가 가능하고 각 영역별로 트랜잭션이 분리된다면 적용.

  • List Partition

    • 지점, 사업소, 사업장 등 핵심적인 코드 값으로 PK 가 구성되거나 분류 할수 있는 테이블이라면 PK에 의해 파티셔닝이 되는

    • List Partition 을 적용 할 수 있다. 하지만, Range Partition 처럼 보관주기에 따라 쉽게 삭제하는 기능은 제공 되지 않음.

  • Hash Partition

    • Hash 조건에 따라 해시알고리즘이 적용되어 테이블이 분리되므로 설계자는 데이터가 어떤 테이블에 들어갔는지 알수 없음.
  • Composite Partition

    • Main/ Sub 관계로 나누어 분할하는 파티셔닝 기법.

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

  • 데이터 모델링을 완성 -> 데이터베이스 용량산정 -> 대량 데이터가 처리되는 테이블에 대해서 트랜잭션 처리패턴 분석

    -> 집중화된 트랜잭션이 컬럼,로우 등으로 발생하는 것을 파악하고 테이블을 분리 검토 -> 컬럼수가 많다면 1:1 분리 고려, 데이터

    용량이 많아 성능이 저하된다면 파티셔닝기법 적용 검토