不为人知的技术--Oracle并行异步执行存储过程
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,背景:最近遇到一个case,Client端程式调用存储过程SP1,过程SP1执行完成后返回结果到Client。因为过程SP1执行时间要5秒钟,时间太长Client用户无法接受。分析主过程SP1性能,发
千家信息网最后更新 2025年01月21日不为人知的技术--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安全错误
数据库的锁怎样保障安全
应用软件开发企业调研提纲
云存储服务器在监控哪个位置
网络安全技术培训考试内容
自己设计一个关系数据库
上海朋利网络技术公司地址
有哪些公司使用mysql数据库
广东网络存储服务器
渲染 服务器
天津电商软件开发应用
普通网络安全保护
目前网络安全市场规模
联想刀片服务器管理
打造服务器文件
河北web前端软件开发报价
ark服务器怎么给管理员
2020年服务器出租价格变化
老男孩网络安全基础版
本地机房服务器要通互联网
把数据库数据导出为dat文件
河北回收服务器主板
渗透网络安全技巧
ecu软件开发用什么语言开发
代码写在服务器上
广东省网络技术竞赛试题
保护web服务器安全的设备
2020年服务器出租价格变化
娄底软件开发技工学校
电商平台的网络安全部门职责
杭州安略网络技术有限公司
服务器 交换机