我有一個程序每隔一個小時運行一個表。從程序處理的記錄很多,因此每次執行時大約需要12〜17分鐘。 現在,如果有一種方法(即觸發器)記錄每次執行的持續時間(即表格)?PLSQL - 測量過程的執行持續時間
4
A
回答
7
我不知道會允許自動完成的觸發器。做到這一點的一種方法就像
PROCEDURE MY_PROC IS
tsStart TIMESTAMP;
tsEnd TIMESTAMP;
BEGIN
tsStart := SYSTIMESTAMP;
-- 'real' code here
tsEnd := SYSTIMESTAMP;
INSERT INTO PROC_RUNTIMES (PROC_NAME, START_TIME, END_TIME)
VALUES ('MY_PROC', tsStart, tsEnd);
END MY_PROC;
如果你只需要這幾個程序,這可能就足夠了。
分享和享受。
1
我通常使用帶日期或時間戳列的日誌表,該列使用sysdate/systimestamp的默認值。然後我調用一個自治過程,在日誌中插入我關心的某些地方(開始/結束過程調用,提交後等):
請參閱here(查找我的答案)。
如果要插入數百萬行,則可以控制何時(多久)插入日誌表。再次看到我的例子。
1
要添加到第一個答案,一旦您有開始和結束時間戳,您可以使用此功能將它們變成毫秒數。如果沒有其他的話,這有助於可讀性。
function timestamp_diff(
start_time_in timestamp,
end_time_in timestamp) return number
as
l_days number;
l_hours number;
l_minutes number;
l_seconds number;
l_milliseconds number;
begin
select extract(day from end_time_in-start_time_in)
, extract(hour from end_time_in-start_time_in)
, extract(minute from end_time_in-start_time_in)
, extract(second from end_time_in-start_time_in)
into l_days, l_hours, l_minutes, l_seconds
from dual;
l_milliseconds := l_seconds*1000 + l_minutes*60*1000
+ l_hours*60*60*1000 + l_days*24*60*60*1000;
return l_milliseconds;
end;
相關問題
- 1. 測量存儲過程持續時間
- 2. Jmeter - 測量OS進程採樣器執行持續時間
- 3. 測量多線程的執行時間
- 4. 程序執行的C++測量時間
- 5. 通過NSDataDetector檢測持續時間
- 6. 測量程序執行時間
- 7. 測量時間執行
- 8. C++測量執行時間
- 9. 測量執行時間
- 10. 測量Java執行時間
- 11. 測量執行時間短
- 12. 測量java短時間運行的線程執行時間
- 13. Google如何測量Firebase測試的持續時間?
- 14. PLSQL Oracle 10 - 執行存儲過程
- 15. 測量定時器功能的持續時間
- 16. 檢測MOV文件的持續時間
- 17. 執行repreat bash命令時的睡眠持續時間操作
- 18. 庫來測量.NET中每個方法的執行持續時間winform應用程序
- 19. VARCHAR執行PLSQL過程時,導致0的值丟失
- 20. 在多線程環境中測量線程的執行時間
- 21. 在用Citrus Framework執行測試時持續運行模擬
- 22. 持續時間
- 23. C - 測量功能時間執行
- 24. CakePHP 2.1測量頁面執行時間
- 25. 用D語言測量執行時間
- 26. 測量代碼執行時間
- 27. 如何測量構建執行時間?
- 28. R中測量功能執行時間
- 29. 測量芹菜任務執行時間
- 30. 使用SPIM測量執行時間
你可以使用'DBMS_UTILITY.GET_TIME'以及右@BobJarvis – Sathya 2011-03-15 15:19:21
@Sathya:肯定DBMS_UTILITY.GET_TIME可以使用,但GET_TIME的分辨率只有1/100秒。在這種情況下,這可能適用於所討論的函數運行多分鐘的情況,但是如果您的程序運行速度非常快,TIMESTAMP將更適合於記錄開始和結束時間。當然,如果一個快速運行的過程正在計時,大量的記錄將被插入到PROC_RUNTIMES中,這很可能會快速填充關聯的表空間。總是這樣...... :-) – 2011-03-15 15:32:26
確實,謝謝澄清! – Sathya 2011-03-15 15:41:15