今天做了一个连接SQL server的小测试结果如下
1. 在20000次的循环中创建和关闭与SQL server 2012 的连接,且每次循环线程睡0毫秒。
结果: 在执行过程中会报异常,执行完毕的时间12分钟左右
2. 在20000次的循环中创建和关闭与SQL server 2012 的连接,且每次循环线程睡20毫秒。
结果: 在执行过程中不报异常但却有等待连接的时间,执行完毕的时间11分钟左右
3. 在20000次的循环中创建和关闭与SQL server 2012 的连接,且每次循环线程睡40毫秒。
结果: 在执行过程中无异常且连接无等待,执行完毕的时间13分钟左右
综上结果:在短时间内数据库开关次数多了,就会有连接延迟。
为何出现该现象,如何优化该问题呢?
import java.util.Date;
import daemon.DBConnectUtil;
public class ConnnectionTest {
public static void main(String[] args) {
try {
long s = new Date().getTime();
for (int i = 0; i < 20000; i++) {
System.out.print("i " + i + " j " + j);
Thread.sleep(20);
DBConnectUtil cu = new DBConnectUtil("172.31.9.185",
"BOH_CASH");
cu.getConnection();
cu.closeConnection();
}
System.out.print("time: " + (new Date().getTime() - s));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}