자격증/SQLD

[SQLD 개념 - 1과목 Part2. 데이터모델과 성능] 4) 대량 데이터에 따른 성능

  • -
728x90

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

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

  • 데이터가 특정 테이블에 많이 발생되는 경우, 트랜잭션(DB에서 수행하는 논리적 작업의 단위)이 분산 처리될 수 있도록 테이블 단위에서 분할하는 방법을 적용할 필요가 있다

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

  • 성능 저하를 예방하는 2가지 경우
    • 한 테이블에 데이터가 대량으로 집중된 경우
      • SQL 문장에서 데이터 처리를 위한 I/O 양이 증가하기 때문에 성능 저하
      • 인덱스 구성으로 접근하는 범위를 조절하면서 I/O를 줄일 수 있다.
    • 하나의 테이블에 여러 칼럼이 존재하여 디스크에 많은 블록을 점유한 경우
      • 디스크에 물리적으로 저장되는 범위가 넓어짐(여러 블록을 차지)
      • 데이터 처리를 위해 여러 블록에 접근해야 하기 때문에 SQL 문장의 성능이 저하
      • 함수적 종속성에 근거하여 하나의 테이블을 설계하거나 기술적 분석을 통해 성능 향상
      • Row Chaining : row 길이가 너무 길어 데이터 블록 하나에 데이터가 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 하나의 로우가 저장된 형태
      • Row Migration : 데이터 블록에서 수정이 발생하면서 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간에 저장하는 방식

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

  • 칼럼 수가 많은 테이블에서 데이터 처리하면 디스크 I/O 양이 증가하기 때문에 성능이 저하 됨

  • 트랜잭션이 발생되는 특정 칼럼을 분석하여 테이블을 분할하는 과정을 통해 디스크 I/O를 줄일 수 있다

  • 분리된 테이블은 디스크에 적어진 칼럼이 저장되므로 Row chaining과 Row migration이 줄어든다

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

논리적으로는 하나의 테이블이지만 물리적으로 테이블 스페이스를 분할하여 저장하는 구조의 파티셔닝을 적용

  • RANGE PARTIOTION
    • 대상 테이블이 날짜 또는 숫자 값으로 분리 가능하고, 각 영역별 트랜잭션이 분리 된다면 적용
    • 데이터 보관 주기에 따라 테이블에 데이터를 쉽게 지우는 것이 가능(파티션 된 테이블을 DROP하면 되니까)하므로 데이터 보관 주기에 따른 테이블 관리가 용이
  • LIST PARTITION
    • 핵심 코드 값으로 PK가 구성되어 있고, 대량의 데이터가 있는 테이블이라면 각각의 값에 의해 파티셔닝 진행
    • 대용량 데이터를 특정 값에 따라 분리 저장은 할 수 있지만, RANGE PARTITION 처럼 데이터 보관 주기에 따라 삭제하는 기능은 제공되지 않는다
  • HASH PARTITION
    • HASH 조건에 따라 해시 알고리즘이 적용되어 테이블이 분리되면서 설계자는 테이블에 데이터가 정확하게 어떻게 들어가 있는지 알 수 없다
    • 성능 향상을 위해 사용하고, 데이터 보관 주기에 따른 삭제 기능은 제공되지 않는다

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

  • 수평/수직 분할 결정의 원칙
    • 데이터 모델링을 완성한다
    • 데이터베이스 용량산정(어느 테이블에 데이터 양이 대용량이 되는지 분석)을 한다
    • 대량 데이터가 처리되는 테이블에 대해서 트랜잭션 처리 패턴을 분석(테이블을 1:1 형태로 분리할 수 있는지 검토)한다
    • 집중화된 처리가 칼럼 단위로 발생하는지, 로우 단위로 발생하는지 분석하여 해당 단위로 테이블을 분리한다
      • 칼럼의 수가 적지만 데이터 용량이 많아서 성능 저하가 예상되면, 테이블 파티셔닝 전략을 고려

출처 : https://blog.naver.com/handuelly/221709607292

 

SQLD, 1-2-4 대량 데이터에 따른 성능

1. 대량 데이터 발생에 따른 테이블 분할 - 데이터가 특정 테이블에 많이 발생되는 경우, 트랜잭션(DB에...

blog.naver.com

 

728x90
300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.