세부 인덱스 통계
RUNSTATS 옵션을 사용하는 인덱스의 DETAILED 매개변수는 버퍼 풀 크기에 따라 옵티마이저가 필요한 데이터 페이지 패치 수를 추정할 수 있도록 통계 정보를 수집합니다. 이 추가 정보는 옵티마이저가 인덱스를 통해 테이블에 액세스하는 비용을 적절하게 추정하는 데 유용하게 사용됩니다.
세부 통계는 다른 버퍼 풀 크기에서 전체 인덱스 스캔을 수행하는 경우 테이블의 데이터 페이지에 액세스하는 데 필요한 실제 입출력 수에 대한 간단한 정보를 제공합니다. RUNSTATS 유틸리티가 인덱스 페이지를 스캔할 때 다른 버퍼 크기를 모델링하고 페이지 결함이 발생하는 빈도를 추정합니다. 예를 들어, 하나의 버퍼 페이지만 사용 가능한 경우 인덱스에서 참조하는 각각의 새 페이지로 인해 페이지 결함이 발생합니다. 최악의 경우 각 행이 다른 페이지를 참조하여 인덱싱된 테이블의 행 수와 동일한 입출력 수가 발생할 수도 있습니다. 또는 다른 극단적인 상황으로 버퍼 크기가 전체 테이블을 보유할 수 있을 정도로 큰 경우(최대 버퍼 크기에 따라 다름) 모든 테이블 페이지를 한 번에 읽습니다. 따라서 실제 입출력 수는 버퍼 크기의 증가하지 않는 단순한 기능입니다.
통계 정보는 인덱스 순서에 대한 테이블 행 클러스터링 수준의 세부 추정도 제공합니다. 클러스터링이 적게 발생하면 인덱스를 통해 테이블 행에 액세스하는 데 필요한 입출력이 증가합니다. 옵티마이저는 인덱스를 통해 테이블에 액세스하는 비용을 추정할 때 버퍼 크기 및 클러스터링 수준을 모두 고려합니다.
- 쿼리가 인덱스에 없는 컬럼을 참조하는 경우
- 테이블에 클러스터링 수준이 다양한 여러 개의 비클러스터 인덱스가 있는 경우
- 키 값들 간 클러스터링 수준이 균일하지 않은 경우
- 균일하지 않은 방식으로 인덱스 값이 갱신된 경우
사전 지식이 없거나 다양한 버퍼 크기에서 인덱스 스캔을 강제 실행한 후의 실제 입출력 결과를 모니터링하지 않으면 이러한 조건을 식별하기 어렵습니다. 이러한 조건의 존재 여부를 판별하는 가장 저렴한 방법은 인덱스에 대한 세부 통계를 수집 및 조사하고 결과 PAGE_FETCH_PAIRS가 비선형이면 보유하는 것입니다.
세부 인덱스 통계를 수집하는 경우, RUNSTATS 조작을 완료하는 데 시간이 오래 걸리고 메모리 및 처리 시간이 추가로 필요합니다. 예를 들어, DETAILED 옵션(SAMPLED DETAILED 매개변수와 같음)에는 2MB의 통계 힙이 필요합니다. 이 메모리 요구사항에 대한 stat_heap_sz 데이터베이스 구성 매개변수 설정에 추가로 488개의 4KB 페이지를 할당하십시오. 힙이 너무 작은 경우, RUNSTATS 유틸리티는 통계를 수집하기 전에 오류를 리턴합니다.
테이블의 크기가 충분(약 25페이지 이상)하지 않으면 CLUSTERFACTOR 및 PAGE_FETCH_PAIRS를 수집하지 않습니다. 이 경우 CLUSTERFACTOR는 0 - 1의 값이고 CLUSTERRATIO는 -1(수집하지 않음)입니다. 테이블이 상대적으로 작은 경우, RUNSTATS 유틸리티는 값이 0 - 100인 CLUSTERRATIO만 수집합니다. CLUSTERFACTOR 및 PAGE_FETCH_PAIRS는 수집하지 않습니다. DETAILED절이 지정되지 않은 경우 CLUSTERRATIO만 수집됩니다.