使用net.sourceforge.jtds.jdbc.Driver作为我的MSSQL驱动程序用于我的所有应用程序。我在准备好的语句中遇到了性能问题,并了解到sendStringParametersAsUnicode = false应该可以解决问题。不幸的是,我似乎无法让司机接受价值。我可以得到微软的驱动程序com.microsoft.sqlserver.jdbc.SQLServerDriver接受参数就好:在persistence.xml中JTDS驱动程序接受sendStringParametersAsUnicode = false的问题?
jdbc:sqlserver://servername:1433;databaseName=dbname;sendStringParametersAsUnicode=false
作品,在我ds.xml中。准备好的陈述在22秒内快速完成。
但是,我似乎无法像JTDS一样获得相同的性能提升。它仍然挂在准备好的声明上,每次迭代需要几秒钟。
我已经尝试了几个字符串的变体,并在我的测试(persistence.xml与Hibernate.connection.url)和服务器与JTA和ds.xml看到相同的滞后。
jdbc:jtds:sqlserver://server:1433/dbname;sendStringParametersAsUnicode=false
jdbc:jtds:sqlserver://server:1433;sendStringParametersAsUnicode=false;databaseName=dbname
jdbc:jtds:sqlserver://server:1433;sendStringParametersAsUnicode=false;selectMethod=cursor;socketKeepAlive=true;databaseName=dbname
一切我读过指出微软的驱动程序是慢,我公司与它的问题在过去。如果可能的话,我真的很喜欢使用JTDS,但不能等待10秒准备好的声明!
任何人有任何想法?
感谢
好问题乔恩。 MSSQL 2008.这两个驱动程序在没有设置的情况下在准备好的语句中延迟约9秒(默认情况下设置为true),但MS驱动程序提高到少于1秒,而JTDS驱动程序的性能没有出现变化。 – javatestcase 2012-01-31 07:20:43
此外,查询在探查器中运行时间小于1秒(度量值为0。00秒) – javatestcase 2012-01-31 07:23:21
@javatestcase:您可以查看服务器上的日志以确定语句的发送方式吗?我希望能够在细节的某处获得。 – 2012-01-31 07:26:24