문서의 이전 판입니다!
- 반복 수행되는 엑세스는 자신의 수행속도에 반복횟수를 곱한 만큼의 부하를 가져오므로 수행속도에 미치는 영향이 아주 크다.
- Nested Loop Join, Sub-Query, Fetch후 루프 내에서 반복되는 쿼리
- 테이블에는 아주 양호한 분포도를 가진 컬럼이 있기 마련이다.
- 인덱스 컬럼 순서를 정할 때등 여러 경우에서 크게 활용될수 있음
- 인덱스는 넓은 범위를 처리하게 될 때 많은 부담을 주게 된다.
- 전체 범위 처리 시, 넓은 범위 처리는 인덱스 사용 때 수행속도가 좋지 않을 수 있음.
- 처리 범위의 최대 크기와 평균 예상 범위, 자주 사용되는 정렬의 순서, 처리 유형을 수집하면 유용한 자료가 될 것임
- 빈번하게 사용된다는 것은 시스템 전반에 미치는 영향이 그 만큼 크기 때문에 아주 중요하다.
- 업무적인 측면에서 각 컬럼들간의 상호관계를 잘 파악해 보면 특정 컬럼들끼리 자주 조합하여 사용되는 경합형태를 찾을 수 있다.
- 중심이 되는 컬럼을 찾아 이와 연관되는 컬럼들을 검토
- End User는 조건의 범위는 넓게 부여하면서 최근의 데이터만 보려고 하는 경우가 많음. 빠른 응답까지 요구함
- 통계자료를 추출하는 경우는 대개 범위가 넓다.
- 넓은 범위 처리가 대부분 임. 클러스터나 잘 조합된 결합 인덱스 이용하는 것이 좋음.
시점: Test 단계 또는 정상 가동 중인 시스템의 인덱스 교정 시점
- 기능: 어플리케이션을 분석하여 SQL 문장을 Repository 에 저장. 손쉽게 SQL 문장을 가져올 수 있음.
- 한계: 동적 SQL 과 같은 쿼리는 가져오는데 한계가 있으며, 수행 횟수와 같은 자세한 사항은 알 수 없음
- 기능: 전체 커다란 trace 결과에 대해 하나의 상세한 레포트도 얻을 수 있으며 상용 SW에 따라 Advice 역할 까지 해주기도 함.
- 한계: 시스템에 큰 부하를 줌. 그러므로 trace 기간은 제한 되어야 하며 그 기간내의 분석 밖에 행할수 없음
- 기능: 서버에 부담을 덜 주므로 장기간 수집하는 것이 가능하다.
- 단점: trace에 비해 정보가 빈약하다.
어떤 어플리케이션에서 수행되었는지와 같은 장기간 수집을 하더라도 여전히 모든 SQL 구문 수집하는 것이 어렵다.
- 유사한 형태의 SQL들이 정렬되도록 출력
- SQL문장 별로 정렬하는 것 보다 조건절에 사용된 컬럼별로 정렬하는 것이 보다 유리
- 엑세스 유형에 자주 등장하는 컬럼
- 인덱스의 앞부분에 지정해야 할 컬럼
- 기타 수행속도에 영향을 미칠 것으로 예상되는 컬럼
SELECT SUM(count(*)) FROM sales WHERE sale_date between ‘20051201’ and ‘20051225’ AND sael_dept = ‘11200
SELECT /*+ CLUSTER(sales) */ SUM(count(*)) FROM sales WHERE sale_date between ‘20051201’ and ‘20051225’ AND sael_dept = ‘11200’