使用JDBC连接到DB的时间

时间:2014-04-28 17:48:51

标签: java jdbc

当我像这样测试运行时间时,我机器上的时间是735

 public class TestDBCP {

    static
    {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
    long l = System.currentTimeMillis();
    Connection conn = null;
    try {
        for(int i =0; i < 100; i++)
        {
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo","root","Sph815@cs");
            conn.close();
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println(System.currentTimeMillis() - l);
    }

     }

但是当我使用以下测试时,它的运行时间变得更长,我不明白为什么更多的工作时间更少?

public class TestDBCP {

static
{
    try {
        Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
public static void main(String[] args) {
long l = System.currentTimeMillis();
    try {
        for(int i =0; i < 100; i++)
        {
 DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo","root","Sph815@cs");
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println(System.currentTimeMillis() - l);
    }

}

2 个答案:

答案 0 :(得分:0)

您没有立即关闭第二个连接。打开和关闭一个连接100次并不会像一次打开100个连接那样长。

答案 1 :(得分:0)

您假设执行额外语句(关闭连接的语句)将意味着程序将花费更多时间,因为close()语句执行会增加额外的CPU使用率。

如果您不执行它,则会节省此CPU时间,但数据库必须处理更多open connections simultaneously,这会降低其性能。因此,随着打开的连接数量的增加,getConnection()语句将花费更长的时间来执行。

这可能是你的第二个版本比第一个版本执行速度慢的原因。