基本的数据库连接性能问题,DB强人来点明一下?
经测试,打开/关闭一条数据库需要4或5秒
整个一条功能流程从开始到结束一共10秒,2次数据库打开占用了9秒~~!
数据库连接是这样写的:
四个类 0.应用类:调用接口类 1.主类:提供的接口类 2.业务类:执行查询的类 3.连接类:连接数据库
0.应用类
public class OOO()
{
public void getMyInfo()
{
AAA a=new AAA()
a.Run1();
a.Run2();
}
}
1主类
public class AAA()
{
public String Run1()
{
BBB b=new BBB();
String n=b.getName();
b.closeConn();
return n;
}
public String Run2()
{
BBB b=new BBB();
String a=b.getAge();
b.closeConn();
return a;
}
}
3.业务类--写法一
public class BBB()
{
private Connection conn=CCC.getConn();
public String getName(){...stmt...rs...}
public String getAge(){...stmt...rs...}
public void closeConn(){CCC.dbclose(conn);}
}
3.业务类--写法二 //这么写的话,主类AAA多一步b.openConn();
public class BBB()
{
private Connection conn=null;
public void openConn()
{
conn=CCC.getConn();
}
public String getName(){...stmt...rs...}
public String getAge(){...stmt...rs...}
public void closeConn(){CCC.dbclose(conn);}
}
4.连接类
public class CCC()
{
private static Connection conn = null;
public static Connection getConn(){}
public static void dbclose(Connection conn){}
}
上面的数据库连接编写的合理么,那里有不对的地方?以上面的写法打开/关闭一条连接要4,5秒,很慢,怎么能改进一下.(目前没有使用连接池,JDBC直接连接),如果用连接池打开一条连接最快能到1,2秒么?
------解决方案--------------------如果使用连接池,连接数据库的速度可以近似地为“0”。
如果不采用连接池的话,要提高性能,那 Connection 就不能关,并采用单例模式获得 Connection 对象。
在数据库连接池中,池里的连接也是不关的哦,连接池中 Connection.close() 的方法是经过代理处理过的,并不是真正地关掉,而是将其放回连接池中。
------解决方案--------------------连接池
http://www.jopener.cn/category/database-connection-pools/
------解决方案--------------------想问下access是否可以用连接池~