Oracle 쿼리 실행 시간
오라클에서 쿼리 실행 시간을 얻고 싶습니다.Oracle이 결과를 인쇄하는 데 걸리는 시간이 아니라 실행 시간만 소요됩니다.
MySQL에서는 셸에서 실행 시간을 쉽게 얻을 수 있습니다.
SQL*Plus에서 이 작업을 수행하는 방법
SQL*Plus 명령어를 발행할 수 있습니다.SET TIMING ON
월클럭 타임을 취득할 수 있지만, 예를 들면, 취득 시간을 취득할 수 없습니다.
AUTOTRACE 설정(다음과 같이 사용)SET AUTOTRACE TRACEONLY
는 출력을 억제하지만 쿼리를 만족시키기 위한 모든 작업을 수행하고 결과를 SQL*Plus로 되돌립니다.이것에 의해 쿼리는 억제됩니다.
마지막으로 SQL*Plus 세션을 추적하여 "SQL*Net message to client", "SQL*Net message from client" 등 클라이언트 대기 이벤트 대기 시간을 수동으로 계산할 수 있습니다.
용도:
set serveroutput on
variable n number
exec :n := dbms_utility.get_time;
select ......
exec dbms_output.put_line( (dbms_utility.get_time-:n)/100) || ' seconds....' );
또는 다음과 같은 경우가 있습니다.
SET TIMING ON;
-- do stuff
SET TIMING OFF;
...100분의 1초 경과.
어느 경우든 경과시간은 서버의 부하 등에 의해 영향을 받을 수 있습니다.
레퍼런스:
select LAST_LOAD_TIME, ELAPSED_TIME, MODULE, SQL_TEXT elapsed from v$sql
order by LAST_LOAD_TIME desc
좀 더 복잡한 예(삭제 또는 치환하는 것을 잊지 마십시오.PATTERN
):
select * from (
select LAST_LOAD_TIME, to_char(ELAPSED_TIME/1000, '999,999,999.000') || ' ms' as TIME,
MODULE, SQL_TEXT from SYS."V_\$SQL"
where SQL_TEXT like '%PATTERN%'
order by LAST_LOAD_TIME desc
) where ROWNUM <= 5;
실행 시간보다 일관된 get/논리 읽기를 '작업'에 대한 더 나은 대용물로 볼 것을 권장합니다.실행 시간은 데이터베이스 서버에서 발생하는 다른 상황, 캐시에 있는 데이터의 양 등에 따라 달라질 수 있습니다.
그러나 SQL 실행 시간을 정말로 원하는 경우 V$SQL 보기에 CPU_TIME과 EXCIDS_TIME이 모두 있습니다.
set timing on
spool /home/sss/somefile.txt
set termout off
select ...
set termout on
set timing off
spool off
A에 저장하다script.sql
터미널에서 다음을 수행합니다.
sqlcl user@host/dbname @/path/to/your/script.sql
언급URL : https://stackoverflow.com/questions/3559189/oracle-query-execution-time
'bestsource' 카테고리의 다른 글
각도 UI 그리드 'gridApi.infiniteScroll.on.needLoadMoreData'가 데이터 변경과 함께 작동하지 않음 (0) | 2023.03.15 |
---|---|
JSON을 추상 클래스로 역직렬화하는 중 (0) | 2023.03.15 |
모든 요청에 대한 AngularJS $http 사용자 지정 헤더 (0) | 2023.03.15 |
Oracle 데이터베이스에 모든 시퀀스를 가져오려면 어떻게 해야 합니까? (0) | 2023.03.15 |
리액트 라우터 v4와 이점 비교 (0) | 2023.03.15 |