3.3.1. 힌트(Hint)의 활용 기준

  • 힌트는 우리의 요구를 옵티마이져에게 전달할 수 있는 중요한 수단임
  • 힌트가 탄생한 이유는
    • 최초에는 옵티마이져의 실수를 보완해주기 위해서 였음
    • 이제는 잘못을 잡아주는 용도보다 옵티마이져가 가지고 있지 못하는 정보를 우리가 더많이 알고 있을 때나 우리의 특별한 목적을 관철하고자 할 때 사용하게 됨
  • 옵티마이져는 사용자의 힌트를 참조할 뿐임
    • 다른의미에서는 바둑에서나 장기를 둘때의 '훈수'와 매우 유사하여 도움이된다면 받아들이고 가치가 없다고 생각되면 무시함
  • 힌트가 있다는 것은 곧 그러한 유형의 액세스가 있다는 것을 의미함
    • 새로운 힌트가 태어났다면 새로운 형태의 실행계획이 제공되었다는것이므로 숙지하여 활용해야 할것임
    • 힌트가 다른것으로 대체되었다면 좀 더 나은방법으로 실행계획이 개선 되었음 의미함
    • 힌트가 삭제되었다면 이제 더 이상 그러한 방법의 실행계획이 제공하지 않겠다는 것을 의미하므로 우리가 영향을 받게 되는지에 대해 연구해 볼 필요가 있음
      {info:title= Useful Information}
      힌트를 숙지하는 것은 중요함
      {info}
  • 만약 10% 이상의 쿼리에 힌트가 적용되고 잇다면 그원인을 찾아보아야함
    • 옵티마이져 모드 선택이 잘못되었음
    • 인덱스 구성이 전략적이지 못했을 가능이 높음
  • 불필요한 힌트는 액세스 경로의 결정에 악 영향을 미치는 경우도 많음
    • 너무 많은 힌트를 사용하게 되면 인덱스 구성이 변하였을때 애플리케이션을 찾아 일일이 수정해야 할지 모름
    • 더 좋은 실행계획을 자연스럽게 옵티마이져가 찾을수 있음에도 불구하고 힌트로 인해 액세스 경로가 고정됨으로써 웅통성이 크게 저하될수 있음
  • 잘못된 힌트 적용형태의 예제
    • ordered의 광신도
    • 모든 SQL에 'FIRST-ROWS'라는 힌트를 무조건 삽입해둠
    • 열심히 튜닝을 했다고 자랑하는 어떤 업체는 거의 모든 쿼리에 다양한 힌트가 사용되어 있음
      {info:title=Useful Information }
      '시행착오법'으로 하는 튜닝이 아닌 자신이 최적의 실행계획을 알고서 그렇게 되도록 유도하기 위해 힌트를 사용해야함
      {info}

문서에 대하여

  • 최초작성자 : 임주영
  • 최초작성일 : 2008년 3월 20일
  • 이 문서는 오라클클럽 대용량 데이터베이스 스터디 모임에서 작성하였습니다.
  • 이 문서의 내용은 이화식님의 새로쓴 대용량 데이터베이스 솔루션을 참고했습니다.
  • 이 문서를 다른 블로그나 홈페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^\^