1. 대량 데이터 발생에 따른 테이블 분할 개요
테이블 분할 이유
한 테이블에 데이터가 대량으로 집중되거나 하나의 테이블에 여러 개의 칼럼이 존재하여 디스크에 많은 블록을 점유하는 경우 성능 저하 유발
SQL 문장에서 데이터를 처리하기 위한 I/O의 양 증가하여 테이블 성능 저하 유발
블록 I/O 횟수 증가 → 디스크 I/O 가능성 상승(디스크 I/O 시 성능 저하됨)
로우 마이닝 / 로우 마이그레이션이 발생하여 많은 블록에 데이터가 저장되면 데이터베이스 메모리에서 디스크와 I/O가 발생할 때 불필요하게 I/O가 많이 발생하여 성능 저하됨
블록: 테이블 데이터 저장 단위
로우 체이닝: 행 길이가 너무 길어 여러 블록에 걸쳐 저장됨
로우 마이그레이션: 수정된 데이터가 해당 블록이 아닌 다른 블록의 빈 공간에 저장되는 현상
테이블 분할 방법
수평분할: 칼럼단위로 분할하여 I/O 감소시킴, 너무 많은 칼럼의 수가 있는 경우 사용
수직분할: 행 단위로 테이블 분할하여 I/O를 감소시킴
2. 한 테이블에 많은 수의 칼럼을 가지고 있는 경우
칼럼이 많아지면 물리적 디스크에 여러 블록의 데이터가 저장되기 때문에 데이터를 처리할 때 여러 블록에서 데이터를 I/O 해야 하는 즉, SQL 문자의 성능이 저하가 발생할 수 있음
칼럼이 많아지면 로우체이닝과 로우마이그레이션이 많아져 성능이 저하
이로 인해 데이터베이스 메모리에서 디스크와 I/O가 발생할 때 불필요하게 I/O가 많이 발생하여 성능이 저하
트랜잭션이 발생될 때 어떤 칼럼에 집중적으로 발생하는지 분석하여 테이블을 쪼개어 주면 디스크 I/O가 감소하여 성능이 개선, 즉 적절하게 1:1 관계로 분리함으로써 성능향상이 가능
3. 대량 데이터 저장 및 처리로 인해 성능
많은 양의 데이터가 예상될 경우 파티셔닝을 적용하거나 PK에 의해 테이블을 분할하는 방법을 적용
데이터가 대량 발생하면 서버사양이 좋고 인덱스를 잘 생성해도 SQL문자의 성능이 나타나지 않기 때문에 논리적으로 하나의 테이블로 보이지만 물리적으로 여러 개의 테이블스페이스에 쪼개어 저장할 수 있는 구조의 파티셔닝을 적용 à 데이터 조회 밤위 줄여 성능 향상
Range Partition
데이터 값의 범위를 기준으로 분할. 가장 많이 사용하는 파티셔닝.
테이블이 날짜 또는 숫자값으로 분리가 가능하고 각 영역별로 트랜잭션이 분리된다면 적용
테이터 보관주기에 따라 테이블에 데이터를 쉽게 지우는 것이 가능해 테이블관리가 용이
List Partition
대용량 데이터를 특정한 값을 기준으로 분리하여 저장.
RANGE PARTITION과 같이 데이터 보관주기에 따라 쉽게 삭제하는 기능은 없음
Hash Partition
해시 함수를 적용하여 분할, DBMS가 알아서 분할 관리, 데이터 위치를 알 수 없음
데이터 보관주기에 따라 쉽게 삭제하는 기능은 없음
Composite Partition
여러 파티션 기법을 복합적으로 사용하여 분할
파티션 인덱스(Partition Index)
Global Index, Local Index: 여러 파티션에서 단일 인덱스 사용, 파티션 별로 각자 인덱스 사용
Prefixed Index, Non-Prefixed Index: 파티션키와 인덱스키 동일, 파티션키와 인덱스키 구분
4. 테이블에 대한 수평분할/수직분할의 절차
1) 데이터 모델링을 완성한다.
2) 데이터베이스 용량산정을 한다.
3) 대량 데이터가 처리되는 테이블에 대해서 트랜잭션 처리 패턴을 분석한다.
4) 칼럼 단위로 집중화된 처리가 발생하는지, 로우 단위로 집중화된 처리가 발생되는지 분석하여 집중화된 단위로 테이블을 분리하는 것을 검토
'Study > SQLD' 카테고리의 다른 글
1-2장 데이터 모델과 성능 - 6절 분산 데이터베이스와 성능 (0) | 2022.06.19 |
---|---|
1-2장 데이터 모델과 성능 - 5절 데이터베이스 구조와 성능 (0) | 2022.06.18 |
1-2장 데이터 모델과 성능 - 3절 반정규화와 성능 (0) | 2022.06.16 |
1-2 장 데이터 모델과 성능 - 2절 정규화와 성능 (0) | 2022.06.15 |
1-2장 데이터 모델과 성능 - 1절 성능 데이터 모델링의 개요 (0) | 2022.06.14 |