728x90
# DYNAMIC SAMPLING
옵티마이저 동적 표본 추출 작업 • 샘플링은 컴파일 시 수행됩니다. • 동적 표본 추출 기능을 사용하여 질의를 수행하는 경우 다음과 같은 결과가 나타납니다. – 데이터 표본 추출을 위해 반복적인 SQL 문이 실행됩니다. – 샘플링된 블록 수는 OPTIMIZER_DYNAMIC_SAMPLING 초기화 파라미터에 따라 다릅니다. • 동적 샘플링 동안 선택성을 확인하기 위해 표본에 술어가 적용됩니다. • 다음 경우에 동적 표본 추출을 사용합니다. – 표본 추출 시간이 실행 시간의 극히 일부에 불과한 경우 – 질의가 여러 번 실행되는 경우 – 더 좋은 계획을 찾을 수 있다고 판단되는 경우 |
SELECT * FROM EMP100 WHERE ename='scott1'; |
SELECT * FROM EMP100 WHERE ename='scott99'; |
l 만약에 통계정보를 지우고 확인하면 둘다 index range scan을 한다 EXEC dbms_stats.delete_table_stats('SCOTT','EMP100'); SELECT * FROM EMP100 WHERE ename='scott1'; SELECT * FROM EMP100 WHERE ename='scott99'; - 위의 과정이 의미하는 것은 통계정보를 수집하면 제대로된 수행계획을 세우지만 없으면 잘못된 수행계획을 세운다 - 그래서 위와 같이 통계정보를 수집하지 않고 정확한 실행계획을 보려면 아래 처럼 수행하면 된다 SELECT /*+ dynamic_sampling(emp100 10) */ * FROM EMP100 WHERE ename='scott1'; SELECT /*+ dynamic_sampling(emp100 10) */ * FROM EMP100 WHERE ename='scott99'; - /*+ dynamic_sampling(emp100 10) */ : 통계정보가 없거나 오래됐을 때 통계정보를 수집하지 않고 이 힌트만 써서 지금 수행하는 이 SQL만 기본적인 통계정보를 수집하는 힌트 : 10이 의미하는 것은 통계정보를 수집하는 정도인데 1~10까지 설정가능하고 숫자가 클수록 많은 정보를 수집 |
l dynamic sampling 기능을 시스템 레벨에서 키는 법
SQL> show parameter optimizer dynamic NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ optimizer_capture_sql_plan_baselines boolean FALSE optimizer_dynamic_sampling integer 0 optimizer_features_enable string 11.2.0.1 optimizer_index_caching integer 0 optimizer_index_cost_adj integer 100 optimizer_mode string ALL_ROWS optimizer_secure_view_merging boolean TRUE optimizer_use_invisible_indexes boolean FALSE optimizer_use_pending_statistics boolean FALSE optimizer_use_sql_plan_baselines boolean TRUE SQL> alter system set optimizer_dynamic_sampling=3; SQL> shutdown immediate SQL> startup - dynamic sampling 힌트를 안쓰고 아래와 같이 수행하면 통계정보를 수집하면서 정상적인 수행결과를 세운다 SELECT * FROM EMP100 WHERE ename='scott1'; SELECT * FROM EMP100 WHERE ename='scott99'; |
'빅데이터과정 > SQL TUNING' 카테고리의 다른 글
#37_140805_TUNING_실행계획과 통계정보 (0) | 2014.08.05 |
---|---|
#37_140805_TUNING_HISTOGRAM (0) | 2014.08.05 |
#37_140805_TUNING_MODEL 절 (0) | 2014.08.05 |
#36_140804_TUNING_STAR JOIN (0) | 2014.08.04 |
#36_140804_TUNING_UNION TUINING (0) | 2014.08.04 |