ITPUB论坛-中国最专业的IT技术社区

 
 注册
热搜:
查看: 340|回复: 7

存储过程能实现并发吗?

[复制链接]
论坛徽章:
73
2010新春纪念徽章
日期:2010-03-01 11:06:132011新春纪念徽章
日期:2011-02-18 11:43:332012新春纪念徽章
日期:2012-01-04 11:55:422013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:44:08马上有车
日期:2015-01-19 09:45:33最佳人气徽章
日期:2012-03-13 17:39:18ITPUB季度 技术新星
日期:2012-11-27 10:16:10问答徽章
日期:2013-10-23 15:13:22林肯
日期:2013-11-02 08:34:46
跳转到指定楼层
1#
发表于 2018-1-8 09:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
存储过程能实现并发吗?比如处理1000w行的数据,10个并发,每个进程处理100w行。
存储过程的代码都是顺序执行的,对并发没啥概念啊。
如果是shell脚本的话都好处理,10个子shell,放入后台执行,谁都不挡谁的道。

论坛徽章:
269
ITPUB15周年纪念
日期:2016-11-06 13:16:21秀才
日期:2017-01-20 11:04:31妮可·罗宾
日期:2017-01-13 16:26:01秀才
日期:2016-05-20 15:09:32射手座
日期:2016-05-26 14:02:50双子座
日期:2016-05-25 16:05:44白羊座
日期:2016-05-23 11:49:19金牛座
日期:2017-12-25 10:42:55双鱼座
日期:2016-04-29 17:13:05秀才
日期:2016-04-29 15:03:39
2#
发表于 2018-1-8 10:55 | 只看该作者
你用参数传入到where子句,将数据集划分开来,然后用shell起10个会话调,应该可以啊!

使用道具 举报

回复
论坛徽章:
269
ITPUB15周年纪念
日期:2016-11-06 13:16:21秀才
日期:2017-01-20 11:04:31妮可·罗宾
日期:2017-01-13 16:26:01秀才
日期:2016-05-20 15:09:32射手座
日期:2016-05-26 14:02:50双子座
日期:2016-05-25 16:05:44白羊座
日期:2016-05-23 11:49:19金牛座
日期:2017-12-25 10:42:55双鱼座
日期:2016-04-29 17:13:05秀才
日期:2016-04-29 15:03:39
3#
发表于 2018-1-8 10:57 | 只看该作者
如果你不用DML本身的并行处理特性的话,自己控制,大概只能像上面说的那样

使用道具 举报

回复
论坛徽章:
0
4#
发表于 2018-1-8 11:29 | 只看该作者
oracle11g有加强这个dbms_parallel_execute包,可以实现并发处理数据

使用道具 举报

回复
认证徽章
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
5#
发表于 2018-1-8 11:49 | 只看该作者
1、数据库并行的实施单位是SQL语句级别,而存储过程的操作由一系列SQL语句处理;
2、如果人工实施存储过程级别的并行,那得人工处理并行逻辑和共享资源的分割;
3、shell脚本的并行也是一样,并行逻辑和共享资源的分割也是由人工处理,只不过楼主可能对shell脚本更加熟悉而已。

使用道具 举报

回复
认证徽章
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
6#
发表于 2018-1-8 11:49 | 只看该作者
qyinu 发表于 2018-1-8 11:29
oracle11g有加强这个dbms_parallel_execute包,可以实现并发处理数据

对,但仅限于DML。

使用道具 举报

回复
论坛徽章:
73
2010新春纪念徽章
日期:2010-03-01 11:06:132011新春纪念徽章
日期:2011-02-18 11:43:332012新春纪念徽章
日期:2012-01-04 11:55:422013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:44:08马上有车
日期:2015-01-19 09:45:33最佳人气徽章
日期:2012-03-13 17:39:18ITPUB季度 技术新星
日期:2012-11-27 10:16:10问答徽章
日期:2013-10-23 15:13:22林肯
日期:2013-11-02 08:34:46
7#
 楼主| 发表于 2018-1-11 17:01 | 只看该作者
solomon_007 发表于 2018-1-8 10:55
你用参数传入到where子句,将数据集划分开来,然后用shell起10个会话调,应该可以啊!

shell脚本的方式我实现了,无非是划分任务。看来是没有纯存储过程的方法了。

使用道具 举报

回复
论坛徽章:
486
秀才
日期:2015-09-09 10:33:01秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12状元
日期:2015-11-23 10:04:09举人
日期:2015-11-23 10:04:09秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21
8#
发表于 2018-1-12 00:11 | 只看该作者
XQKA 发表于 2018-1-11 17:01
shell脚本的方式我实现了,无非是划分任务。看来是没有纯存储过程的方法了。

要看你的“处理”是在做什么。如果是个DML, 上面已经说了用dbms_parallel_execute包。
你也可以用存储过程划分任务,然后每个任务提交一个JOB, 这样就能并行执行。但是你需要自己实现主程序和子任务之间的通讯。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

DTCC2018购票6.8折优惠进行时

中国数据库技术大会是国内数据库及大数据领域规模最大、最受欢迎的技术交流盛会。 2018年5月10-12日,第九届中国数据库技术大会将如约而至。本届大会以“数领先机•智赢未来”为主题,设定2大主会场及20个技术专场,邀请来自国内外互联网、金融、教育等行业百余位技术专家,共同探讨Oracle、MySQL、NoSQL、大数据等领域的前瞻性热点话题与技术。
----------------------------------------
优惠时间:2018年2月13日前

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 |
  | | |
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表
北京赛车pk10 申博官网 北京赛车pk10 六台宝典现场开奖 北京赛车pk10历史记录 北京赛车开奖 北京赛车预测 949494开奖结果今晚 威尼斯人线上娱乐 手机投注平台 幸运28投注技巧 pk10助赢软件 北京pk10百度鼎盛彩票网 北京赛车聚彩 北京pk10如何稳杀3码 pk10稳赢方法 pk10定位计划 pk10包赢计划群