CERTIFICATION/SQLD
[SQLD/데이터 모델과 성능]2-4. 대량 데이터에 따른 성능
써머레인
2024. 2. 27. 21:52
2. 데이터 모델과 성능
2-4. 대량 데이터에 따른 성능
(1) 성능 저하 원인
- A 한 테이블에 데이터 대량 집중 : 테이블 너무 커짐 ⇒ 효율성 ↓ 디스크 I/O ↑
- A 한 테이블에 여러 컬럼 존재 : 데스크 점유량 ↑ ⇒ 디스크 읽기 I/O ↑
- B 대량 데이터 처리되는 테이블 : SQL문에서 데이터 처리를 위한 I/O ↑ , 인덱스 구성
- B 대량 데이터가 한 테이블에 존재 : 인덱스 크기 ↑ 로 인한 성능 저하
- 컬럼이 많아질 경우 : 로우체이닝, 로우마이그레이션 발생
(2) 해결 방안
- A 한 테이블에 많은 컬럼 ⇒ 수직분할
수직분할 : 컬럼 단위로 분할하여 I/O를 줄임 - B 대량 데이터 저장 문제 ⇒ 파티셔닝 or PK에 의한 테이블을 분할
수평분할 : 로우 단위로 분할하여 I/O를 줄임
(3) 로우 체이닝과 로우 마이그레이션
- 로우 체이닝
- 행 길이가 길어서, 데이터블록 하나에 데이터를 모두 저장하지 않고,
두 개 이상의 블록에 걸쳐서 하나의 로우를 저장하는 형태 (한 로우를 여러 체인처럼)
- ⇒ 1:1로 테이블을 분리하면 ⇒ 디스크 I/O가 줄어 ⇒ 조회 성능 향상 - 로우 마이그레이션
- 데이터블록에서 수정 발생 시, 수정된 데이터를 해당 블록에 저장하지 못하고
다른 블록에 빈 공간을 찾아 저장하는 방식 - 파티셔닝
- 한 테이블에 많은 데이터가 저장되면, 테이블 아무리 쪼개도 성능이 저하됨
- ⇒ 논리적으로는 하나의 테이블이지만, 물리적으로는 여러 개의 테이블로 분리된 형태
(4) 수직/수평 분할 절차
- 데이터 모델을 먼저 완성
- DB 용량 산정
- 대량 데이터가 처리되는 테이블에 대해 트랜잭션 처리 패턴 분석
- 컬럼 or 로우 단위로 집중화된 처리가 발생하는지 분석해 테이블 분리