多线程调用oracle存储过程是否并发执行?

我用delphi写了一个多线程的程序。主要用来实时收集数据,并经过处理后放入数据库中(多线程的),并把结果发回去。我的主要处理过程(主要是查询,判断)和写数据库都放到了存储过程中,但是发现程式执行起来对DB的负担很重,经常这个程式要占70%的cup资源。
所以我想是否多线程调用存储过程时,如果同时有多条线程要调,是否都会放到缓冲中等待前一个线程调用完了,再执行?而不是并发的执行!
请告诉我如果两个程式同时调用oracle存储过程会怎样?
大家有知道的吗?谢谢

这个问题非常简单
所谓的oracle存储过程,无非就是把大量的SQL集中在一起加入了变量循环等。

简单地看它就也就是对几个数据库对象的访问。

我们知道oracle数据库对象的访问是有锁机制的,同一时间内

只有一个用户能访问这样的对象,(最底的行级锁)

可以想象如个2个人同时对一个对象的同一个内容进行处理那

是不可能的。

锁只能被一个用户保持,这是规矩

当然这都是oracle 内部机制,如果多线程调用并非完全相同的内容,锁的竞争不是那么明显当然能够提升处理速度的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-05
并发性
是指两个或多个在同一
时间间隔
内发生。在多道程序环境下,并发性是指宏观上在一段时间内有多道程序在同时执行。但在单处理机系统中,每一个时刻CPU仅能执行一道
程序
,故微观上,这些程序是在CPU上交互执行

多线程调用oracle存储过程是否并发执行?
对于多线程调用存储过程是没有问题的,但可能存在存储过程所处理的表产生并发冲突,CPU资源占用多通常是磁盘读写多,建议在DB负担重时查一下哪些表被锁,然后对存储过程进行优化。

多线程调用oracle存储过程是否并发执行?
是不可能的。锁只能被一个用户保持,这是规矩 当然这都是oracle 内部机制,如果多线程调用并非完全相同的内容,锁的竞争不是那么明显当然能够提升处理速度的。

程序多线程执行同一个 oracle存储过程
当然是并发执行,因为线程就是并发执行的

多线程oracle调用存储过程排队吗
因此,多线程Oracle调用存储过程会排队执行,以确保每个调用请求都能被正确处理,保证数据的一致性和完整性。在处理大量请求时,可以通过优化存储过程和调用方式等方式来提高性能和效率,以减少排队的时间。

oracle存储过程同时被多个进程调用时,在存储过程里,用什么方法可以保证...
你可以设置一个全局变量参数,如LV_COUNT:=0,假设有三个过程P1\\P2\\P3希望按顺序执行,每个过程在执行开始首先判断LV_COUNT的值,如果是0,P1执行,执行后把LV_COUNT置为1;如果是1,P2执行,执行后把LV_COUNT置为2;如果是2,P3执行,执行后把LV_COUNT再次置为0,可以开始下一次循环。

Oracle执行\/调用存储过程
使用EXECUTE命令进行执行相对简单,只需在命令后面输入存储过程名称即可。让我们通过一个示例进行说明。实例:执行pro_insertDetp存储过程 首先,创建一个存储过程,用于向dept表中插入一条记录,代码如下:执行此命令:EXECUTE pro_insertDept;可以在PL\/SQL程序块中调用存储过程。例如,使用以下步骤:设置服务...

ORACLE多人同时执行一条存储过程,会不会有影响?
你这样属于2个事务在操作一个表。如果表中有唯一键,会有一个过程失败的。如果没有唯一键,会写入20000条记录。但是如果存储过程里操作的表是动态传进去的。如果表名不同,同时执行多个这个存储过程是没有影响的。

oracle中,如何防止多个会话同时调用存储过程,造成的计算结果重复,详细...
oracle中,如何防止多个会话同时调用存储过程,造成的计算结果重复,详细描述请看下文. 有一个存储过程pro,会将计算结果插入到一张结果表中tab,在执行pro的时候,pro会先将结果表中数据删掉,再执行算法,算出新的结果后插入到tab中.但是如果多个会话同时调用该过程,发现结果... 有一个存储过程 pro,会将计算结果插入到...

oracle存储过程如何并行?
A1 A2 A3也是存储过程吗? job其实上也只是分别调用这几个过程来执行,而不是靠执行一个A就可以让所有A1 2 3 4 并行执行的。 如果A1 2 3 4都是需要参数的话,那么你也只有用A分开给每一个都传递参数,否则的话也是不能并行执行的。 例如:declare n number begin dbms_job.submit('a1;a2;...

oracle中在编写存储过程启动多线程的问题?
这里的并发数可以省略, 也可以自己规定。 如果是省略了, 那么它的设置是DBA完成的。 参数可以在V$parameter这个view里找到。如果单纯从开发的角度看:ORACLE多线程可以提高某些语句查询的速度(不是一定的,取决于你的核,和服务器, 我原本有一些材料可以图示进程数和速度的关系,可惜一时找不到, 如果...

相似回答