SQLP
시험 직전 요약장
판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.
옵티마이저 통계의 기초: Table·Column Statistics 읽기
원래 이론 →판단 기준
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 최초 오차 원인 | 확인 | 후보 개선 |
|---|---|---|
| Row·Block 규모 변화 | NUM_ROWS, BLOCKS, DML | Table Statistics 재수집 |
| 값 편중 | Histogram·Bind 분포 | 필요한 Column Histogram |
| Column 상관관계 | 복합 Predicate | Column Group Statistics |
| 함수·표현식 | Expression Predicate | Expression Statistics·FBI |
| 범위 밖 최신값 | Low/High·Data Max | Statistics Refresh·Partition 전략 |
| Statistics 없음·부족 | Notes·Dynamic Sampling | 영구 Statistics 또는 Dynamic 설정 |
| Partition 불일치 | Global·Partition Stats | Granularity·Incremental 운영 |
| SQL 의미·Data Type | Predicate·Bind | SQL·Bind Type 개선 |
통계를 무조건 전체 재수집하는 대신 필요한 범위를 선택합니다.
헷갈리는 개념
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 혼동 | 정확한 기준 |
|---|---|
| NUM_ROWS는 현재 COUNT(*)다 | Statistics 수집·유지 시점의 Object Row 통계다 |
| BLOCKS는 Segment 할당 Block이다 | Optimizer Statistics의 Used Block이며 Segment View와 구분한다 |
| SAMPLE_SIZE가 작으면 무조건 나쁘다 | AUTO_SAMPLE_SIZE·Algorithm과 필요한 Statistics 종류를 함께 본다 |
| DENSITY는 항상 1/NDV다 | Histogram이 없을 때 그렇고 Histogram이 있으면 의미가 달라진다 |
Equality Cardinality는 항상 (Rows-Nulls)/NDV다 | Oracle의 가장 단순 공식은 Rows/NDV이며 실제 계산은 더 복잡하다 |
| LOW/HIGH가 분포를 모두 설명한다 | 통계상 범위이며 Histogram과 다르다 |
| STALE_STATS=NO면 정확하다 | 변경률 임계치만 통과했으며 편중·상관·범위 밖 문제는 남는다 |
| 100% Sample이면 모든 추정이 정확하다 | 상관·표현식·Bind·SQL 구조 문제는 별도다 |
| E-Rows≠A-Rows이면 전체 통계를 재수집한다 | 최초 오차 원인에 맞는 통계를 선택한다 |
| Starts가 커도 E-Rows와 A-Rows를 그대로 비교한다 | Per-Start 또는 Total 기준을 맞춘다 |
대표 계산·예제
단일 Table·단일 Equality Predicate·
예시·텍스트좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
Selectivity ≈ 1 / NDV
Cardinality ≈ NUM_ROWS / NDV
예시입니다.
예시·텍스트좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
NUM_ROWS = 1,000,000
NDV = 4
개념적 Cardinality ≈ 250,000
실제 Optimizer에는 NULL·
내 최근 연습 오답
현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.
오답 기록을 확인하고 있습니다.