본문 바로가기

DB

[책정리] 옵티마이저와 파라미터

새로 , 대용량 데이터베이스 솔루션 vol.1 공부하며 여기에 정리해본다.

 

사실 옵티마이저는 다루기 민감한 부분이며, 과연 살면서 옵티마이저 모드를 바꿀 기회를 만날 있을는지 없다. 그래도 이런 것도 있다는 것을 어렴풋이 아는 정도만 되어도 도움이 같다.

   

옵티마이저

-      통계 정보 관리가 중요

ü  실제 사용하는 도중에 만들어진 통계 정보를 사용할 있도록 설정

ü  야간/주간에 따라 다른 성향으로 DB 사용하는 경우 시간대에 따라 별도로 저장한 통계정보를 제공하여 실행계획을 다르게 적용할 있다.(ex 야간배치, 주간 – OLTP)

-      옵티마이저 모드

ü  FIRST_ROWS : 초기 옵티마이저인 경험적 방법을 비용 기준에 적용할 있는 모드, 기존에 사용하던 것을 더욱 최적화 시키는 경우에 사용

ü  FIRST_ROWS_n : 비용기준 최적화 방법, 새로 구축하는 경우에 적당

ü  ALL_ROWS : 비용기준 최적화 방법, OLAP 적당

ü  옵티마이저 모드를 운영 중에 바꾸는 것은 굉장히 위험

     

옵티마이저 모드의 파라미터

-      CURSOR_SHARING

ü  EXACT(default), SIMILAR, FORCE

ü  파라미터는 조건절의 상수값들을 변수로 전환시켜 파싱 있게 한다. 기본 옵션인 EXACT 경우 조건절의 상수가 대소문자만 변경되어도 실행계획을 다시 만든다.

ü  EXACT : 조건절의 상수값이 미묘하게 변경되어도 실행계획을 다시 만들어야 한다면 이를 사용

ü  SIMILAR : 조건절의 상수값이 바뀌어도 같은 실행계획을 공유하겠다면 사용

-      권장 옵션

ü  CURSOR_SHARING : 기본값인 EXACT 유지하다가 문제가 발생하는 세션에 대해서만 SIMILAR 등을 적용하여 문제를 해결한다.

ü  물론 다른 파라미터도 같은 방식으로 옵션을 변경/적용하는 것이 좋다.

-      동적 표본화(Dynamic Sampling)

ü  통계 정보가 생성되지 않은 경우 SQL 실행될 마다 표본을 추출하여 통계를 만들고 이를 이용하여 실행계획을 만드는 방법이다.

ü  쿼리마다 표본을 추출하므로 빈번한 쿼리나 결과가 작은 경우는 비추~