대량 데이터

한준수·2023년 5월 28일
0

SQLD

목록 보기
10/31

대량 데이터발생의 문제점

  • 하나의 테이블에 대량의 데이터가 존재하는 경우에는 인덱스의 Tree구조가 너무 커져 효율성이 떨어져 데이터를 처리(입력,수정,삭제,조회)할 때 디스크 I/O를 많이 유발하게 된다.
  • 한 테이블에 많은 수의 칼럼이 존재하게 되면 데이터가 디스크의 여러 블록에 존재하므로 인해 디스크에서 데이터를 읽는 I/O량이 많아지게 되어 성능이 저하된다.
  • 로우체이닝 : 로우의 길이가 너무 길어서 데이터 블록 하나에 데이터가 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태
  • 로우 마이그레이션 : 데이터블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식

    로우 체이닝과 로우 마이그레이션이 발생하여 많은 블록에 데이터가 저장되면 DB메모리에서 디스크I/O가 발생할 때 많은 I/O가 발생하여 성능저하 발생

    트랜잭션을 분석하여 적절하게 1:1관계로 분리함으로써 성능향상이 가능하도록 해야 한다.


PK에 의해 테이블을 분할하는 방법(파티셔닝)

테이블에 많은 양의 데이터가 예상될 경우 파티셔닝을 적용하거나 PK에 의해 테이블을 분할하는 방법을 적용할 수 있다.
1.RANGE PARTITION(범위)

대상 테이블이 날짜 또는 숫자값으로 분리가 가능하고 각 영역별로 트랜잭션이 분리되는 경우
ex) 매출_0528

가장 많이 사용하는 파티셔닝의 기준이다.

2.LIST PARTITION(특정값 지정)

지점, 사업소 등 핵심적인 코드값으로 PK가 구성되어 있고 대량의 데이터가 있는 테이블의 경우
ex) 고객_서울

LIST PARTITON은 대용량 데이터를 특정값에 따라 분리 저장할 수는 있으나 RANGE PARTITION과 같이 데이터 보관주기에 따라 쉽게 삭제하는 기능은 제공하지 않는다.

3.HASH PARTITION(해쉬 적용)

지정된 HASH 조건에 따라 해시 알고리즘이 적용되어 테이블이 분리


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

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

컬럼 많음 ➡ 1:1 분리
데이터 많음 ➡ 파티셔닝

profile
빅데이터과 1학년

0개의 댓글