티스토리 뷰

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

-       테이블 분할 설계를 통한 성능 저하의 예방

1)     수평분할 : 컬럼 단위로 분할하여 I/O 경감

2)     수직분할 : 로우 단위로 분할하여 I/O 경감

 

-       성능저하의 원인

1)     하나의 테이블에 데이터 대량 집중 : 한 테이블에 데이터가 대량으로 집중될 때 테이블 구조가 너무 커져서 효율성이 떨어져 테이버를 처리할 때 디스크 I/O를 많이 유발하게 된다.

2)     하나의 테이블에 여러 개의 컬럼 존재 : 이 경우 디스크의 점유량이 높아지고 데이터를 읽는 I/O량이 많아져서 성능이 저하된다.

3)     대량의 데이터가 처리되는 테이블의 경우 : SQL문장에서 데이터를 처리하기 위한 I/O의 양이 증가한다. 인덱스를 적절하게 구성하여 이용하면 이를 줄일 수 있다.

4)     대량의 데이터가 하나의 테이블에 존재할 때 : 인덱스를 생성할 때 인덱스의 크기(용량)가 커지게 되고 그렇게 되면 인덱스를 찾아가는 단계가 깊어지게 되어 조회의 성능에도 영향을 미치게 된다.

5)     컬럼이 많아지는 경우 : 물리적인 디스크에 여러 블록에 데이터가 저장되게 된다.

n  로우 체이닝(Row chaining)현상 : 로우길이가 너무 길어서 블록 한에 데이터가 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태

n  로우 마이그레이션(Row Migration) : 데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장히자 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식 -> 두 가지 모두 불필요한 I/O가 많이 발생하여 성능이 저하된다.

 

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



 

3.   대량 데이터 저장 및 처리로 인해 성능이 저하되는 경우

-       파티셔닝

1)     Range Partition

u  적용대상 : 대상 테이블이 날짜 or 숫자값으로 분리가 가능하고, 각 영역별로 트랜잭션이 분리

u  장점 : 데이터 보관주기에 따라 테이블에 데이터를 쉽게 지우는 것이 가능하다.

 

2)     List Partition

u  장점 : 대용량 데이터를 특정값에 따라 분리/저장 가능

u  단점 : 쉽게 삭제되는 기능은 없다.

 

3)     Hash Partition

u  저장된 해쉬 조건에 따라 해쉬 알고리즘이 적용되어 테이블이 분리된다. 데이터의 확인이 어렵고 삭제가 불가능

 

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

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

2)     데이터베이스 용량선정을 한다. (컬럼 수)

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

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

u  컬럼수가 많으면 1:1로 분리 가능한지 검토한다.

u  컬럼수가 적으나 데이터 량이 많으면 파티셔닝을 고려한다.

반응형
LIST
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함