日期:2014-05-18  浏览次数:20693 次

基本的数据库连接性能问题,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是否可以用连接池~