DBMS_APPLICATION_INFO.SET_MODULE 프로시저를 사용하면 PL/SQL 코드의 성능을 간편하게 측정할 수 있다. 관련 내용을 살펴보자.
아래와 같은 패턴으로 PL/SQL 코드를 실행하면 된다.
DBMS_XPLAN.DISPLAY_CURSOR 프로시저를 사용하면 PL/SQL 코드에서 수행된 SQL의 실행 통계를 확인할 수 있다.
-- 1 ALTER SESSION SET STATISTICS_LEVEL = ALL; EXEC DBMS_APPLICATION_INFO.SET_MODULE ('M1', 'A1'); BEGIN FOR c1 IN (SELECT * FROM dept) LOOP FOR c2 IN (SELECT * FROM emp WHERE deptno = c1.deptno) LOOP NULL; END LOOP c2; END LOOP c1; END; / EXEC DBMS_APPLICATION_INFO.SET_MODULE (NULL, NULL); ALTER SESSION SET STATISTICS_LEVEL = TYPICAL;
-- 2 SELECT b.plan_table_output FROM (SELECT sql_id, child_number FROM v$sql WHERE module = 'M1' AND action = 'A1' AND plan_hash_value <> 0 ORDER BY last_active_time) a , TABLE (DBMS_XPLAN.DISPLAY_CURSOR (a.sql_id, a.child_number, 'ALLSTATS')) b; PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------------------------------- SQL_ID 0ws4zp45rdbtm, child number 0 SELECT * FROM DEPT Plan hash value: 3383998547 ------------------------------------------------------------------------------------ | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | ------------------------------------------------------------------------------------ | 0 | SELECT STATEMENT | | 1 | | 4 |00:00:00.01 | 7 | | 1 | TABLE ACCESS FULL| DEPT | 1 | 4 | 4 |00:00:00.01 | 7 | ------------------------------------------------------------------------------------ SQL_ID f81g49vq62w9u, child number 0 ------------------------------------- SELECT * FROM EMP WHERE DEPTNO = :B1 Plan hash value: 2141393120 -------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | -------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 4 | | 14 |00:00:00.01 | 7 | | 1 | TABLE ACCESS BY INDEX ROWID BATCHED| EMP | 4 | 3 | 14 |00:00:00.01 | 7 | |* 2 | INDEX RANGE SCAN | EMP_X1 | 4 | 3 | 14 |00:00:00.01 | 4 | -------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - access("DEPTNO"=:B1) ------------------------------------- 32 행이 선택되었습니다.
'Oracle > Tuning' 카테고리의 다른 글
사용자 정의 함수의 실행 계획 (0) | 2018.10.27 |
---|---|
트레이스 파일 병합 (0) | 2018.10.27 |
Star Transformation 쿼리 변환 (0) | 2018.10.16 |
Partition-Wise 조인 (0) | 2018.10.14 |
IOT Secondary 인덱스 (0) | 2018.10.08 |