奇怪,这样有区别吗?(up有分)
程序用JDBC连DB2的数据库.
其中有一条是insert into table(....) select(....)形式的插入SQL语句.
程序每执行到这条语句,都会停滞,显示是在一直执行,可是等了一个小时都没结果.
我试着把这条语句在DB2的客户端工具上直接执行,检索并插入了四千多条数据,耗时81秒.
真奇怪,这条语句可以直接执行,通过应用程序怎么就不行了呢?请大家赐教.
问题点数:100、回复次数:23Top
1 楼interhanchi(on the Java Road)回复于 2005-08-02 18:49:01 得分 5
帮你顶!Top
2 楼joneyonly()回复于 2005-08-02 18:58:41 得分 5
难道死循环?
帮你UPTop
3 楼huangdeji(活着就是等死)回复于 2005-08-02 19:31:22 得分 10
很有可能是抛出了sql异常,然而你没有rollback从而出现了排他现象而导致的Top
4 楼makeitbetter(黑色柳丁)回复于 2005-08-03 08:13:18 得分 0
我处理异常了呀,而且直接执行时也没出现异常.
晕啊Top
5 楼kingofhawks(蓝鹰)回复于 2005-08-03 08:46:17 得分 5
是不是因为程序里执行效率太低所致?用的连接池还是JDBC?Top
6 楼hawaii_wx(梦见夏威夷)回复于 2005-08-03 09:03:56 得分 5
upTop
7 楼ses127127(ses)回复于 2005-08-03 09:19:09 得分 5
你可以用预编译的方法试试你的sql语句Top
8 楼tanghuan()回复于 2005-08-03 09:27:21 得分 0
你开的是自动提交事务还是手工提交事务。
按说,你在正常命令行中81秒,在程序中也应该是,估计是不是未提交,或则被连接的事务把记录锁住了,但又没有形成死锁环,所以会一直等待其他事务放掉锁Top
9 楼sunnyboy409()回复于 2005-08-03 09:28:10 得分 5
顶Top
10 楼liudongbaollz()回复于 2005-08-03 09:28:56 得分 10
检查jdbc驱动,可能驱动不支持这种用法,一般情况下驱动只支持常用的sql语句Top
11 楼makeitbetter(黑色柳丁)回复于 2005-08-03 10:11:28 得分 0
to tanghuan()
估计是不是未提交,或则被连接的事务把记录锁住了,但又没有形成死锁环,所以会一直等待其他事务放掉锁
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
程序是手工提交事务,这个操作是事务里的第一步.
可为什么会被锁住呢?事务没有执行完也不能提交啊.请问有没有解决办法?Top
12 楼makeitbetter(黑色柳丁)回复于 2005-08-03 10:15:58 得分 0
to liudongbaollz()
检查jdbc驱动,可能驱动不支持这种用法,一般情况下驱动只支持常用的sql语句
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
不应该啊,在数据量小的情况下,比如说插入几十条数据,这个操作就好用,应该不是不支持的问题.Top
13 楼IFindit(寻找其中的乐趣)回复于 2005-08-03 10:30:44 得分 20
是不是支持的不好,DB2的客户端如果装在windows下,走的是ODBC,所以ODBC肯定没问题。你在JDBC中用二分法,增加数据,看到多少条就会down掉,或者下载个新的驱动试试Top
14 楼tanghuan()回复于 2005-08-03 21:29:26 得分 0
IFindit(寻找其中的乐趣)
DB2的驱动可以不走ODBC,可以采用网络连接方式Top
15 楼tanghuan()回复于 2005-08-03 21:32:07 得分 0
主要是你的程序是不是不只有一个数据库连接,被其他连接的事务给锁定了,才能让你这个事务等待,如果是这个事务本身是不会的,锁的目的是保证不被其他事务影响和不影响其他事务Top
16 楼zclgod(春风化雷)回复于 2005-08-03 23:09:33 得分 5
sql可以。
那就说明是你程序有我问题哦Top
17 楼An_wave(在软件行业是客户引导了我)回复于 2005-08-03 23:12:32 得分 5
UP~~没用过DB2Top
18 楼kypfos(不在寻梦)回复于 2005-08-03 23:42:41 得分 0
最大可能性我也觉得是造成了死锁Top
19 楼zhumeng459(竹梦)回复于 2005-08-04 09:33:20 得分 5
源码?!Top
20 楼shoulders(Developer)回复于 2005-08-04 09:53:11 得分 5
觉得是驱动程序的问题Top
21 楼liubeiqi(无爱无悔)回复于 2005-08-04 09:57:08 得分 5
UP..........没用过DB2Top
22 楼kindani(kindani)回复于 2005-08-04 10:32:52 得分 5
会不会是时间长连接自动断了?Top
23 楼makeitbetter(黑色柳丁)回复于 2005-08-04 13:05:47 得分 0
我是LZ.
谢谢这么多热心的回复.
如果是驱动程序问题的话,对另一个表的操作数据量也很大,但从没死过.
只有对这个表操作有问题,郁闷啊!Top




