dbms_stats.auto_invalidate에 대한 새로운 사실...
오라클 2008.02.03 11:17지금까지 알고 있기로는 _optimizer_invalidation_period 파라미터(기본값은 18000초, 5시간) 이후에 Query가 실행되는 시점에 Object Invalidation이 이루어지는 것으로 이해했는데 이번에 이것이 잘못된 것이라는 것을 알게 되었다.
이 파라미터의 정확한 작동 방식은 다음과 같다.
- 이 값이 5시간이면 1초 ~ 18000초 사이에 Random하게 관련 Object의 Invalidation을 결정한다.
- 가령 특정 테이블의 통계 정보를 참조하는 SQL 문장이 총 100개가 있다면 이 100개가 다섯 시간에 걸쳐 랜덤하게 골고루 Invalidation되는 알고리즘을 사용한다.
이렇게 함으로써 특정 시점에 관련된 SQL 문장이 한꺼번에 Hard Parse되는 것을 피할 수 있는 것이다.
하지만, 특정 쿼리가 정확하게 언제 최신 통계 정보를 반영할 지를 알 수 없다는 것은 여전히 단점이라고 할 수 있겠다.
자세한 내용은 여기 참조...
http://wiki.ex-em.com/index.php/OPTIMIZER_INVALIDATION_PERIOD
'오라클' 카테고리의 다른 글
Oracle 11g Interval Partition의 버그 (3) | 2008.02.09 |
---|---|
Session cached cursors와 v$open_cursor (4) | 2008.02.05 |
dbms_stats.auto_invalidate에 대한 새로운 사실... (0) | 2008.02.03 |
_session_wait_history 파라미터의 변화 (0) | 2008.01.30 |
Oracle SQL 튜닝 기법: TCF - Tuning by Cardinality Feedback (0) | 2008.01.24 |