背景:

秀嶼ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
最近遇到一個(gè)case,Client端程式調(diào)用存儲過程SP1,過程SP1執(zhí)行完成后返回結(jié)果到Client。
因?yàn)檫^程SP1執(zhí)行時(shí)間要5秒鐘,時(shí)間太長Client用戶無法接受。
分析主過程SP1性能,發(fā)現(xiàn)主要是其中調(diào)用的子過程SP2執(zhí)行需要4秒,且子過程SP2中一條SQL因?yàn)橘Y料量巨大邏輯復(fù)雜已無優(yōu)化可能。另外子過程SP2的主要是計(jì)算審計(jì)功能并記錄日志作用的。
設(shè)想:
能否讓用戶執(zhí)行主過程時(shí)不等子過程完成就 直接返回結(jié)果 ,子過程異步方式在后臺慢慢的運(yùn)行?
直接通過Oracle的技術(shù)能否實(shí)現(xiàn)?
答案是可以的,通過DBMS_JOB.SUBMIT 下面的方法可以實(shí)現(xiàn)。
實(shí)現(xiàn):
創(chuàng)建log表:
CREATE TABLE SFIS1.JOBSUBMIT_LOG ( EXE_TIME DATE, DATAX VARCHAR2(5 BYTE) )
創(chuàng)建子過程:
CREATE OR REPLACE PROCEDURE SFIS1.JOB_SUBMIT (DATA3 IN VARCHAR2)
IS
BEGIN
IF DATA3='1' THEN
dbms_lock.sleep(10); --模擬子過程執(zhí)行10秒需要
insert into sfis1.jobsubmit_log values(SYSDATE,DATA3);
ELSE
insert into sfis1.jobsubmit_log values(SYSDATE,DATA3);
END IF;
commit;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE('FAIL2!');
END;
創(chuàng)建主過程:
CREATE OR REPLACE PROCEDURE SFIS1.JOB_SP (DATA1 IN VARCHAR2,DATA2 IN VARCHAR2)
IS
START_TIME DATE;
l_job NUMBER;
BEGIN
START_TIME := SYSDATE;
DBMS_OUTPUT.PUT_LINE ('Start Time:' || TO_CHAR (START_TIME, 'YYYY-MM-DD-HH24:MI:SS'));
DBMS_JOB.submit (l_job, 'SFIS1.JOB_SUBMIT('||data1||');');
DBMS_JOB.submit (l_job, 'SFIS1.JOB_SUBMIT('||data2||');');
COMMIT;
DBMS_OUTPUT.PUT_LINE ('Elapsed Time:' || CEIL ( (SYSDATE - START_TIME) * 24 * 60 * 60)); --計(jì)算主過程運(yùn)行總時(shí)間
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE ('FAIL!');
END;
執(zhí)行主過程:
exec SFIS1.JOB_SP('1','2');
結(jié)果:
Start Time:2019-06-04-10:11:12
Elapsed Time:0 --執(zhí)行時(shí)間0秒,說明子過程已經(jīng)異步在后臺執(zhí)行了,主過程并沒有等待子過程執(zhí)行完成
查詢log表:
select * from sfis1.jobsubmit_log;
2019/6/4 10:11:13 2
2019/6/4 10:11:23 1 --進(jìn)一步說明子過程異步在后臺執(zhí)行
以上,主要通過 DBMS_JOB.SUBMIT 并行異步后臺執(zhí)行存儲過程。
本文使用技術(shù)主要參考Tom大師:
新聞名稱:不為人知的技術(shù)--Oracle并行異步執(zhí)行存儲過程
本文URL:http://www.yijiale78.com/article14/gipdge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、營銷型網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、靜態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)