?????
就是select的话,oracle是不会串行化用户的并发访问的。你的存储过程中是不是由锁住表的操作,导致其他用户等待。
就是select的话,oracle是不会串行化用户的并发访问的。你的存储过程中是不是由锁住表的操作,导致其他用户等待。
解决方案 »
- 关于在存储过程中使用参数作为插入数据条件时执行慢的问题……
- 一个关于pl/sql连接的问题
- Oracle EBS系统非常难的一个问题(获取销售价格)
- oracle排序后查询前10条记录
- oracle登陆问题
- 红旗 4.0下装了 oracle-xe-univ-10.2.0.1-1.0.i386.rpm 和 oracle-xe-client-10.2.0.1-1.0.i386.rpm ,找不到 proc 命令 ?
- oracle数据导出有中文显示乱码,怎么办 ,急!!!!!
- 10g,网上下有个三个文件一个win32_db,一个companion,还有client,三个文件的各自作用是????
- 菜鸟问题,关于在表里新加一列。
- 初学者问题
- 有关数据提交。
- 帮我看一下这个过程错在哪里?
select xxx from a,b for update on a.col
假如做一个java多线程运行同一个存储过程,那么你会发现执行是同步运行的,也就是只有上一个线程的存储过程运行完毕后,下一下其它的线程才能再执行此存储过程。
但我想实现存储过程的并发执行!!
都不能并行,我连查询都没有,我就是在存储过程中设了个循环让他执行5秒。
结果假如一个执行要5秒,那么我现在十个同时执行却需要50秒,然后同时结束。
我想的问题是不是我在存储过程中的循环耗了太多的CPU??
然后我想是不是因为单个CPU是无法并行,
虽然表面好像五个同时完成,但是时间确实原来一个的五倍!!!
所以我在想一个CPU的话是无法并行的!!!!!!!!!!!!!!!!!
如果您想并行是不是要增加CPU的方式??????
好像ORACLE中查询也是需要多CPU才能达到并行的效果!!!!!
我的一个查询,单单查询用了5秒左右,
然后我开了五SQLPLUS几乎同时执行,结果也是同时出来结果,但是时间是40秒左右。
所以只能说明对同一个功能,比如同一个查询,
如果是同时进行的话是串行的。
我的查询语句是:
select count(*) from (select tel_no,project_id,callup_times,callup_date,bureau_id from cc_callup_data
where bureau_id in (select bureau_id from cc_callup_status where status ='Y')
and project_id in (select project_id from cc_callup_to_flag where callup_flag= '0')
and Callup_Flag <> '2' order by callup_flag desc,callup_times asc );用set timing on
来算查询时间,CPU只有一个。呵呵
CPU使用并没有达到100%,CPU是有空闲的,
况且我的执行都没有同时进行,我是等了一下才进行的,
结果时间还是差不多一个进程执行的五倍,假设我用了五个进程。不知道我这样测试有没有正确,请大家指教
--另外,我还用了一个测试用例。
--我的一个查询,单单查询用了5秒左右,
--然后我开了五SQLPLUS几乎同时执行,结果也是同时出来结果,但是时间是40秒左右。
--所以只能说明对同一个功能,比如同一个查询,
--如果是同时进行的话是串行的。
我认为不是串行执行的,如果是的话,结果就不是同时出来。Oracle肯定考虑到了并发处理。你的问题我觉得可能的答案是磁盘IO的瓶颈问题,最好是尽量优化sql语句。