Oracle存储过程并发执行,受什么影响?

hgamezoom 2014-01-08 06:23:57
如果我开多个客户端,或者多线程执行同一个存储过程,假设存储过程中逻辑如下:

update table set name='xx' where id=传入参数
wait 10秒


假设我同时执行10个存储过程,且每个传入参数都不同,那么是否oracle会同时并发执行这些存储过程,最终我所有客户端执行完毕的时间只有10秒左右?

从我目前观察到的情况来看,不是这样,同时执行的存储过程数量有一个最大限制,当我开了100个线程时,就可以明显观察到有一些请求被等待了,最终完成时间远远超过100*10秒。(oracle最大连接数和进程数设置都远大于100)


但我不知道数据库哪里存在这个限制?有什么办法可以调整?
...全文
749 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
DRAGON__90 2014-02-12
  • 打赏
  • 举报
回复
update 同一个表的时候,可能会引起buffer cache latch
shenlele088 2014-01-16
  • 打赏
  • 举报
回复
按理说是行锁,你传入不同,不应该有影响。 你这个表的这个id是主键吗? 并发肯定同时并发的吗? 最终完成时间远远超过100*10秒?照例说应该是10s,现在不但不是并行,而且比串行还慢了。这个有点想不明白。 你能说说,100线程以下的测试结果吗?
benlaten 2014-01-15
  • 打赏
  • 举报
回复
我也遇到了相同的问题,可能有多个线程和进程执行相同的存储过程,可能会存在并发问题,导致锁表

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧