2014-11-03 44 views
0

我正在嘗試查找程序完成所用的時間。我需要甚至跟蹤以毫秒/納秒爲單位的差異。我期待介紹一些時間戳函數之間,如程序所用的時間

start_time; 
....<transactions> 
end_time; 

使用sysdate,我無法捕獲所需的時間在幾秒鐘內。 任何幫助將有所幫助。

+0

您的查詢之前添加此 '設置統計時間on' – Xion 2014-11-03 22:31:13

+0

'sysdate'返回一個日期到第二,所以我不知道你所說的「是什麼意思無法在幾秒鐘內捕獲所需時間「。如果你想要毫秒(或者納秒取決於操作系統),你需要使用時間戳和'systimestamp'函數。 – 2014-11-03 22:50:04

+1

您是否在查看樂器並記錄您的所有呼叫,或者您是否正在嘗試對您的程序進行配置文件分析? – 2014-11-04 04:30:41

回答

3

您可以嘗試DBMS_UTILITY.GET_TIME

這個函數確定在第二誕辰100的當前時間。這個 子程序主要用於確定已用時間。 子程序被調用兩次 - 在某個進程的開始和結尾 - 然後從第二個 (稍後)編號中減去第一個(較早的)編號以確定流逝的時間。

語法

DBMS_UTILITY.GET_TIME 
    RETURN NUMBER; 

返回值

時間是 其子程序調用從時間點秒100的數量。

一個例子

Declare 
    l_start number; 
    l_end number; 
Begin 
    l_start := DBMS_UTILITY.GET_TIME ; 
    -- transactions 
    l_end := DBMS_UTILITY.GET_TIME ; 
    dbms_output.put_line('elapsed: ' || (l_end - l_start)/100 || 'secs'); 
END; 
+0

+1我經常使用它。不過從文檔中只需注意一點:*根據平臺和計算機,數字返回範圍爲-2147483648至2147483647,並且您的應用程序必須在確定間隔時考慮數字的符號。例如,在兩個負數的情況下,應用程序邏輯必須允許第一個(較早的)數字大於第二個(較晚的)數字,它接近於零。同樣的道理,你的應用程序也應該允許第一個(較早)的數字是負數,第二個(後面的)數字是正數。* – 2014-11-04 06:10:49