- HOME
- [종료]구루비 DB 스터디
- 2013년 하반기 - 오라클 트러블슈팅 스터디
- 3_5장 요약
H1. 1. 고급 SQL 활용
- DECODE 함수나 CASE문을 활용하면 IF ... ELSE 같은 분기조건을 포함하는 복잡한 처리절차를 ONE-SQL로 구현하는 데 도움이 된다.
- 카티션 곱을 이용해 데이터를 복제하는 것도 ONE-SQL을 구현하는 필수 기법 중 하나다.
- UNION ALL을 이용하면 M:M 관계의 조인을 해결하거나 FULL OUTER JOIN을 대체할 수 있다
- 데이터베이스 CALL과 네트워크 부하를 줄이기 위해 화연 페이정 처리가 필요하지만, I/O 효율까지 고려한 효과적인 페이정 처리에 대한 연구가 뒤따라야 한다.
- 윈도우 함수나 WITH 구문 같은 신기능을 활용하면 복잡한 업무 요건을 손쉽게 처리함과 동시에 성능까지 높일 수 있다.
H1. 2. 소트 튜닝
- 메모리 상의 소트 영역 내에서 데이터 정렬 작업을 완료하는 것이 최적이지만, 대량의 데이터를 정렬할 땐 디스크 소트가 불가피하다. 특히, 전체 대상 집합을 디스크에 기록했다가 다시 읽는 작업을 여러 번 반복하는 경우 SQL 수행 성능은 극도로 나빠진다.
- 불필요하게 자주 소트를 유발하진 않는지 데이터 모댈 측면에서의 검토가 펼요하다.
- 가급적 소트가 발생하지 않도록 SQL을 작성해야 한다.
- 정렬 기준으로 구성된 인텍스를 활용하면 소트 연산을 대체할 수 있다.
- 소트가 불가피하다면 소트 영역을 적게 사용하도록 SQL을 작성해야 한다 .
- 소트 영역 크기를 조정하는 튜닝 방안도 고려해야 할 때가 있다
H1. 3. DML 튜닝
- 테이블 데이터를 변경하면 관련된 인텍스에도 변경이 발생하므로 인텍스 개수가 많을수록 DML 성능은 나빠진다
- DIRECT PATH INSERT 또는 로깅 최소화 옵션을 사용하면 대량의 데이터를 압력할 때 성능을 크게 향상시킬 수 있다.
- 각 DBMS가 제공하는 확장 UPDATE문을 활용하면 UPDATE 성능을 높이는 데 크게 도움이 된다 .
- 대량의 데이터를 UPDATE할 땐, TRUNCATE & INSERT 방식이 효과적이다.
H1. 4. 파티선 활용
- 파티션 기능은 관리적 측면과 성능적 측면에서 매우 유용하다.
- RANGE , HASH, LIST, COMPOSITE 등 파티션 유형별 특정을 이해하는 것이 무엇보다 중요하다 .
- 성능적인 측면의 파티션 유용성은 무엇보다도 파티션 PRUNING 기능에서 나온다.
- 인텍스 파티션을 테이블 파티션과 구분할 줄 알아야 한다. 그리고 파티션 인텍스에 다양한 구성이 존재한다 는 사실을 이해하고, 상황에 맞는 전략을 채택해야 한다.
H1. 5. 배치 프로그램 튜닝
- 배치 (BATC씨 프로그램은, 시용자와의 상호작용 없이 대량의 데이터를 처리하는 일련의 작업들을 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 자동으로 수행한다.
- 배치 프로그램의 수행주기가 점점 단축되고 있다
- 온라인 트랜잭션을 처리하는 프로그램과 달리 배치 프로그램은 항상 전체 처리속도를 향상시키는 데에 최적화 목표를 두어야 한다.
- 한정된 자원을 경합 없이 최적으로 사용하도록 타임 윈도우를 조정하는 작업이 필요하다.
- 대용량 배치 프로그램 성능을 높이는 데는 효과적인 ONE-SQL 구현 능력이 매우 중요시된다.
- ARRAY PROCESSING, 파티션 기능, 병렬 처리 등을 잘 활용하면 큰 효과를 볼 수 있다.
- 병렬 처리란, SQL문이 수행해야 할 작업 범위를 여러 개의 작은 단위로 나누어 여러 프로세스(또는 쓰레드)가 통시에 처리하는 것을 말한다. 여러 프로세스가 동시에 작업하므로 당연히 대용량 데이터의 처리 속도를 향상시켜준다.
- 병렬 처리 성능을 개선하는 데는 프로세스 간 상호작용(INTER-OPERATION PARALLELISM)을 줄여주는 것이 도움이 된다.
- PQ_DISTRIBUTE 힌트를 잘 활용하면 프로세스 간 통신량을 줄이는 데 도움이 된다.
문서에 대하여
- HOME
- [종료]구루비 DB 스터디
- 2013년 하반기 - 오라클 트러블슈팅 스터디
- 3_5장 요약