bestsource

Oracle 쿼리 실행 시간

bestsource 2023. 3. 15. 19:48
반응형

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

반응형