Large Data

대량 데이터는 SQL 한 줄보다 구조 선택으로 줄인다

행 수가 커질수록 병목은 WHERE 조건보다 변경량, 파티션 키, 통계, 집계 방식에서 생깁니다.

쿼리만 고치면 남는 병목

scan rows 증가읽어야 하는 행 수 자체가 줄지 않음 undo/redo 폭증긴 트랜잭션이 로그와 락을 키움 temp I/O 증가집계와 정렬을 매번 다시 수행
병목
구조 선택
확인 지표
대량 UPDATE/DELETE
Batch: 키 범위나 시간 단위로 나눈다.
lock wait, redo size, rollback 시간
기간 조건 조회
Partition: pruning 가능한 키를 둔다.
읽은 파티션 수, scanned rows
대량 적재 직후
Stats: 통계와 cardinality를 갱신한다.
estimate rows와 actual rows 차이
1. 행 수실제 읽은 row를 먼저 줄인다. 2. 변경량커밋 단위와 redo 크기를 제한한다. 3. 통계옵티마이저가 최신 분포를 보게 한다. 4. 집계반복 계산은 summary로 옮긴다.
읽은 행 수와 변경량을 줄이지 못하면 SQL 튜닝보다 데이터 배치와 저장 구조를 먼저 다시 봅니다.