seogideogi.log
로그인
seogideogi.log
로그인
SQL 튜닝 실전 경험: 대량 DML 작업 시 인덱스 병목 개선
seogideogi
·
2025년 5월 16일
팔로우
0
SQLTUNING
DB
목록 보기
2/3
📌 SQL 튜닝 실전 경험: 대량 DML 작업 시 인덱스 병목 개선
■ 프로젝트 개요
업무명:
연관 상품 추천 데이터 적재 성능 개선
소속:
오픈마켓
DB:
Oracle
참여 기간:
약 1주
역할:
SQL 성능 개선 및 데이터 적재 구조 개선
■ 문제 상황
하둡에서 생성된 연관 추천 상품 데이터를 Oracle로 이관하는 작업
익스터널 테이블을 통해 파일을 읽고, 정규 테이블에 DML로 적재
정규 테이블은 날짜 기반 파티셔닝(1/2 교차 사용)
구조
특정 시점부터
DML이 8시간 이상 소요
되며 프로세스가 지연
■ 원인 분석
대상 테이블에
UNIQUE KEY 및 PRIMARY KEY 인덱스
설정되어 있었음
데이터 량이 증가하면서,
인덱스 유지/검사 비용으로 인한 병목
이 발생
성능 분석 결과,
DML 시점의 인덱스 재조정 비용이 병목 원인
으로 판단
■ 수행 작업
순번
조치 내용
결과
1
PK 제약조건 제거 후 DML
성능 향상 미미
2
PK 제약조건 + 인덱스 제거 후 DML
성능 향상
3
모든 제약조건 및 인덱스 제거 후 DML 수행, 이후 인덱스 재생성
DML 시간: 8시간 → 1시간 이내 단축
이후 작업부터는
DML 전 인덱스 제거 → DML → 인덱스 재생성
절차를 표준화
■ 주요 고려사항
SELECT 성능과 DML 성능 간의 트레이드오프
에 대한 실무적 이해 확보
인덱스 유지 비용은 대용량 배치에서 매우 큰 병목 요인
이 될 수 있음
인덱스는 반드시 "쿼리 성능"만을 위한 요소가 아니라
전체 데이터 흐름 관점에서 판단
해야 함
■ 튜닝 후 효과
데이터 적재 시간:
기존 8시간 → 약 55분으로 단축
일일 배치 안정화 및 다음 단계 시스템 지연 제거
이후 유사한 구조의 DML 대상 테이블에 동일한 전략 적용
■ 기타 경험 요약
인덱스 생성은 쿼리 조건 패턴 분석을 기반으로 수행
배치성 쿼리는 Full Scan을 유도
하는 힌트를 적용하여 I/O 최적화
불필요한 인덱스는 신중하게 판단 후 제거 (삭제는 거의 없음)
성능 테스트 시
EXPLAIN PLAN 및 AWR 분석 활용
seogideogi
한 줄 소개 하고 싶지 않아요.
팔로우
이전 포스트
Portfolio of Experience in Oracle SQL Tuning and Performance Monitoring
다음 포스트
SQL 튜닝 실전 경험: 테이블 구조 변경을 통한 연관 상품 추천 성능 개선
0개의 댓글
댓글 작성