多次使用一个con,数据库连接是否会僵死?

05-09-27 blade_rain
这个连接con是从dbcp连接中获得的。

在程序中需要多次的数据操作,我想采用如下方式:

获取一个con后,使用它,但创建多个PreparedStatement,从而执行多条sql语句(包括查询修改等),每条sql执行时使用一个新的PreparedStatement实例,但连接仍然使用获取的那一个con

这样会不会造成程序执行的时间过长(比如数据量很大),

而使那个连接con可能等待时间过长而僵死?

或者对于上面的问题,我使用多个con,然后执行多条sql

这两种方式哪一种比较好?好这还有更好的?

谢谢解答

blade_rain
2005-09-27 16:34
ps:我将apache dbcp连接池的等待时间设为-1,即表示无限等待,直到

超时为止

但何时才算超时?

banq
2005-09-27 17:06
当然必须使用Pool,这是线程池的功能,J2EE是多线程,切忌别防止争夺同一个资源。

至于是多个sql 使用多个线程con; 还是多个sql复用一个线程连接,这是由线程连接池内部机制决定,无需你编程者关心,你记住不要hold住一个连接,不要让连接保有状态就可以了。

系统性能的提升根本解决之道是使用缓存。

blade_rain
2005-09-27 17:29
谢老大~~~~~~~~~

awardsure
2005-10-07 14:06
两种方式都不可取,很容易因为你自己对连接是需要 死锁。 如果两条语句在同一函数体内 可以使用一个连接执行完后 释放连接 这样减少连接次数 提高性能。同时如果可能采用批处理操作的话 那更好。

猜你喜欢