태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Oracle 11gR2 옵티마이저의 Cardinaliy Feedback

오라클 2009.12.18 16:09
Oracle 11gR2의 런타임 옵티마이저에 Cardinality Feedback 기능이 구현되었다는 것을 알게 되었습니다.
  1. Hidden and Undocumented "Cardinality Feedback"
  2. Adaptive Optimisation ?
  3. Trivial Research on the Cardinality Feedback on 11gR2
오라클은 10g에서 자동 쿼리 튜닝(Automatic Query Tuning)이라는 이름으로 Cardinality Feedback 기능을 소개한 바가 있습니다. 예상 로우 수(Estimated Cardinality)와 실제 로우 수(Actual Cardinality)를 비교해서 그 차이를 줄이는 방식이 바로 Cardinality Feedback 방식입니다. 이를 위해서 OPT_ESTIMATE 힌트가 추가되었지요. 하지만 이것은 어디까지나 튜닝 옵티마이저 엔진에 그쳤습니다.

11gR2에서 이 기능은 이제 튜닝 엔진이 아닌 런타임 엔진에까지 적용이 되었습니다. 자세한 내용은 위의 링크를 참조하시면 됩니다. 간단하게 정리하면 다음과 같습니다.

  1. 쿼리를 수행한 후 예상 로우 건수와 실제 로우 건수의 차이가 크다고 판단되면 해당 실행 계획은 공유 불가 상태가 되고 실제 로우 건수를 저장한다. 하지만 예상 로우 건수와 실제 로우 건수의 차이만이 유일한 팩터인지는 확실하지 않음.
  2. 다음에 동일한 쿼리가 다시 실행되면 최초의 실행에서 저장한 로우 건수를 OPT_ESTIMATE 힌트를 이용해 쿼리에 삽입한다. 즉 Cardinality Feedback이 이루어진다.
  3. 이 과정은 단 한번만 이루어진다. 즉 최초의 쿼리만이 피드백의 대상이 된다.
  4. _OPTIMIZER_USE_FEEDBACK 파라미터를 이용해 제어 가능하다. 즉 이 파라미터의 값을 FALSE로 변경하면 Cardinality Feedback은 일어나지 않는다.
제 개인적의 의견을 말씀드리면 Cardinality Feedback이 런타임 엔진에까지 적용될 것이라고는 전혀 기대하지 않았습니다. 하지만 결국 그렇게 되었고, 많은 시스템에서 이슈가 될 것입니다.
저작자 표시
신고
Trackback 0 : Comments 3
  1. ktlee67@show.co.kr 2009.12.21 13:24 신고 Modify/Delete Reply

    bind peeking이 처음도입되었을때와 비슷하겠습니다. 처음 실행시키는 sql이 무어냐에 따라 여러 문제를 발생시키겠군요...

    • 욱짜 2009.12.21 14:18 신고 Modify/Delete

      동의합니다. 아마 혼란이 있을 것으로 보입니다.

      11g가 본격적으로 사용되면 다시 한번 심도깊게 다루게 되겠지요.

  2. Eddy 2009.12.30 08:56 신고 Modify/Delete Reply

    지난 1년동안 제공해주신 지식과 열정에 깊이 감사드립니다.
    다음 한 해도 좋은 일만 가득하시기를 축복합니다.

Write a comment

티스토리 툴바