不为人知的技术--Oracle并行异步执行存储过程
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,背景:最近遇到一个case,Client端程式调用存储过程SP1,过程SP1执行完成后返回结果到Client。因为过程SP1执行时间要5秒钟,时间太长Client用户无法接受。分析主过程SP1性能,发
千家信息网最后更新 2025年11月07日不为人知的技术--Oracle并行异步执行存储过程
背景:
最近遇到一个case,Client端程式调用存储过程SP1,过程SP1执行完成后返回结果到Client。
因为过程SP1执行时间要5秒钟,时间太长Client用户无法接受。
分析主过程SP1性能,发现主要是其中调用的子过程SP2执行需要4秒,且子过程SP2中一条SQL因为资料量巨大逻辑复杂已无优化可能。另外子过程SP2的主要是计算审计功能并记录日志作用的。
设想:
能否让用户执行主过程时不等子过程完成就 直接返回结果 ,子过程异步方式在后台慢慢的运行?
直接通过Oracle的技术能否实现?
答案是可以的,通过DBMS_JOB.SUBMIT 下面的方法可以实现。
实现:
创建log表:
CREATE TABLE SFIS1.JOBSUBMIT_LOG( EXE_TIME DATE, DATAX VARCHAR2(5 BYTE))
创建子过程:
CREATE OR REPLACE PROCEDURE SFIS1.JOB_SUBMIT (DATA3 IN VARCHAR2)ISBEGIN IF DATA3='1' THEN dbms_lock.sleep(10); --模拟子过程执行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;创建主过程:
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)); --计算主过程运行总时间EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE ('FAIL!');END;执行主过程:
exec SFIS1.JOB_SP('1','2');结果:
Start Time:2019-06-04-10:11:12
Elapsed Time:0 --执行时间0秒,说明子过程已经异步在后台执行了,主过程并没有等待子过程执行完成
查询log表:
select * from sfis1.jobsubmit_log;
2019/6/4 10:11:13 2
2019/6/4 10:11:23 1 --进一步说明子过程异步在后台执行
以上,主要通过 DBMS_JOB.SUBMIT 并行异步后台执行存储过程。
本文使用技术主要参考Tom大师:
https://asktom.oracle.com/pls/asktom/asktom.search?tag=execute-procedures-concurently-in-a-procedure
过程
后台
时间
结果
技术
存储
明子
用户
运行
复杂
巨大
作用
功能
大师
性能
成就
方式
方法
日志
程式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
神舟十二号软件开发
软件开发公司英语岗位
武汉嵌入式软件开发招聘信息
CSDN数据库技术与应用
数据库使用命令
网络安全大数据
jsp获取数据库数据
软件开发和数据分析哪个好
常用抗原数据库
不是三大数据库的论文
安徽专业网络技术服务代理商
国泰安数据库中的因子数据
上海车士友网络技术有限公司
我的世界出售服务器
我的世界服务器设置福利指令
方圆数据库
深圳专业软件开发需要多少钱
去数据库获取时间执行定时任务
八月瓜专利数据库
信息技术与网络安全好投吗
网络安全抓肉鸡
四川ai人工智能服务器云空间
网络安全手抄报高一黑白
网络技术主要涉及哪些方面
网络安全法一周年 公安部
我所遇到过的网络安全问题
网络安全作业教育平台甘肃
计算机软件著作权属于软件开发者
财务分析怎么找数据库
正保集团软件开发