본문 바로가기

Oracle/튜닝14

자동으로 튜닝을 권고해주는 SQL_TUNE ADVISOR 쿼리 튜닝이 필요할 때 , 무조건적으로 믿지는 마시고 하나의 방법으로써 알아두시면 튜닝 시에 좀더 다양한 선택지 중 고려해볼 수 있을 것 같습니다. 1.TASK 생성 DECLARE l_sql_tune_task_id VARCHAR2(100); BEGIN l_sql_tune_task_id := DBMS_SQLTUNE.CREATE_TUNING_TASK ( sql_id => '3xr6wpczjg3mj', scope => DBMS_SQLTUNE.scope_comprehensive, time_limit => 1800, task_name => '3xr6wpczjg3mj_tuning_task', description => 'Tuning task for statement 3xr6wpczjg3mj.'); DBMS_OUTP.. 2023. 3. 10.
[DBMS_SQLTUNE] Profile로 SQL변경없이 실행계획 변경해보기 출처 : http://www.gurubee.net/article/58105 SQL_PROFILE 사용 방법 10g부터 소개된 SQL_PROFILE의 기능에 대한 소개를 하고자 한다. SQL_PROFILE이란, 특정 SQL_ID의 실행계획이 비효율적으로 생성될 경우, SQL 구문 변.. www.gurubee.net 해당 내용은 쿼리 수정없이 실행계획을 변경할 수 있습니다. 하지만 방법 중 SQLTUNE_CATEGORY 라는 system 파라미터를 변경해야 하므로 사용 시 주의를 요합니다. 결론은, SQL A(원래 SQL)과 SQL B(원하는 실행계획이 있는 SQL)을 준비하고, SQL B의 실행계획중 OUTLINE을 이용하여 SQL A에 적용하여 실행계획을 변경합니다. SQLTUNE_CATEGORY 에대한.. 2023. 1. 20.
Dynamic Sampling에 대한 개념 및 테스트 Dynamic Sampling 이란? 옵티마이저의 능력을 향상시키기 위해 도입된 기능입니다. 통계정보가 존재하지 않을 경우에 Dynamic Sampling level에 따라 데이터블록들을 Sampling한 후 통계정보를 생성해 SQL문을 수행합니다.(CBO에서만 작동하면 RBO에서는 작동하지 않습니다) 12c부터는 Dynamic Statistics 로 이름이 변경되었습니다. 사용시기? SQL문을 컴파일 하는 동안 옵티마이저는 통계정보가 실행계획을 생성하기에 충분한지 여부를 고려하여 Dynamic Sampling을 사용할지 말지 여부를 결정합니다. 쿼리에 있는 테이블 중 하나 이상에 통계가 없는 경우 Dynamic Sampling는 옵티마이저가 기본 통계정보를 수집합니다. SQL문에 복잡한 표현식이 포함되.. 2022. 12. 27.
Join Factorization Oracle에서 or 조건을 처리하는 연산으로 OR-EXPANSION이라고 불리우는 동작이 있습니다. UNION ALL 로 풀어서 작업을 수행하는 CONCATENATION.or-expansion이라고 합니다. 힌트는 /*+ USE_CONCAT */를 사용합니다. UNION ALL로 풀지말고 수행하는 CONCAT을 방지하는 힌트는 /*+ NO_EXPAND */ 가 있습니다. 두 힌트에 대한 내용은 아래 사이트에서 설명한 내용을 해석하였습니다. USE_CONCAT USE_CONCAT 힌트는 UNION ALL 집합 연산자를 사용하여 쿼리의 WHERE 절에 있는 결합된 OR 조건을 복합 쿼리로 변환하도록 강제합니다. 일반적으로 이러한 변환은 연결을 사용하는 쿼리의 비용이 연결을 사용하지 않는 비용보다 저렴한 경.. 2022. 10. 28.