0

我用谷歌搜索了很多,但我无法弄清楚这种奇怪行为的原因。我正在使用带有 Windows 身份验证的 microsoft sql server 2012。我是这样连接的:

try {
  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  conn = DriverManager.getConnection("jdbc:sqlserver://MY-PC:1433;databaseName=database;integratedSecurity=true");
} catch (Exception e) {
  System.out.println("failed" + e.getMessage());
  e.printStackTrace();
}

此连接比我使用jtds驱动程序(以及将 .jar 添加到项目库等)net.sourceforge.jtds.jdbc.Driver和适当的连接字符串 ( jdbc:jtds:sqlserver://MY-PC:1433/database;instance=SQLEXPRESS) 时快大约 3 倍。

有人知道为什么吗?我读到 jtds 驱动程序比 sqldbc 驱动程序快得多,但我不知道我做错了什么。

谢谢

4

1 回答 1

1

jTDS 驱动程序对连接后查询的工作方式进行了很多改进。他们的基准没有提到初始连接速度:http: //jtds.sourceforge.net/benchTest.html。它们仅测量连接已激活后执行的操作。

我怀疑连接初始化代码比其他驱动程序慢。这就是为什么值得保留预先创建的连接的连接池以获得最佳性能的原因。事实上,任何驱动程序都是如此。

于 2013-08-24T07:36:48.347 回答