Oracle DBMS_UTILITY.GET_TIME與DBMS_UTILITY.GET_CPU_TIME區別,dbmsutility

來源:互聯網
上載者:User

Oracle DBMS_UTILITY.GET_TIME與DBMS_UTILITY.GET_CPU_TIME區別,dbmsutility

DBMS_UTILITY.GET_TIME與DBMS_UTILITY.GET_CPU_TIME比較


原文連結:http://www.oracle-developer.net/display.php?id=307


一直以來開發人員都熟悉DBMS_UTILITY.GET_TIME函數。常用語測試一個程式中2個時間點的間隔,即程式耗時。
到了10g,oracle又增加一個DBMS_UTILITY.GET_CPU_TIME函數。這個新函數用於測量2個時間點使用的CPU時間。
下面咱們通過例子證明以下2個函數的區別:



例1:一個計算密集(cpu-bound)型例子


這個例子沒有I/O。這一點強調了CPU密集操作,這種情況下GET_TIME和GET_CPU_TIME函數將返回幾乎一致的耗時。
DECLARE    b1 PLS_INTEGER;    b2 PLS_INTEGER;    e1 PLS_INTEGER;    e2 PLS_INTEGER;    n  PLS_INTEGER := 0; BEGIN    b1 := DBMS_UTILITY.GET_TIME();    b2 := DBMS_UTILITY.GET_CPU_TIME();    FOR i IN 1 .. 100000000 LOOP       --NULL;       n := n + 1;    END LOOP;    e1 := DBMS_UTILITY.GET_TIME() - b1;    e2 := DBMS_UTILITY.GET_CPU_TIME() - b2;    DBMS_OUTPUT.PUT_LINE( 'GET_TIME elapsed = ' || e1 || ' hsecs.' );    DBMS_OUTPUT.PUT_LINE( 'GET_CPU_TIME elapsed = ' || e2 || ' hsecs.' ); END;


 
GET_TIME elapsed = 175 hsecs.
GET_CPU_TIME elapsed = 174 hsecs.


PL/SQL 過程已成功完成。




例2:I/O密集(I/O-bound)型例子


這個例子對於PLSQL程式來講更具有代表性。這種情況下我們會看到2個函數耗時將截然不同。


DECLARE   b1 PLS_INTEGER;   b2 PLS_INTEGER;   e1 PLS_INTEGER;   e2 PLS_INTEGER;BEGIN   b1 := DBMS_UTILITY.GET_TIME();   b2 := DBMS_UTILITY.GET_CPU_TIME();   FOR r IN ( SELECT * FROM all_source ) LOOP      NULL;   END LOOP;   e1 := DBMS_UTILITY.GET_TIME() - b1;   e2 := DBMS_UTILITY.GET_CPU_TIME() - b2;   DBMS_OUTPUT.PUT_LINE( 'GET_TIME elapsed = ' || e1 || ' hsecs.' );   DBMS_OUTPUT.PUT_LINE( 'GET_CPU_TIME elapsed = ' || e2 || ' hsecs.' );END;/


GET_TIME elapsed = 324 hsecs.
GET_CPU_TIME elapsed = 273 hsecs.


PL/SQL 過程已成功完成。



-------------------------------------------

Dylan    Presents.








































相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.