一直使用 net.sourceforge.jtds.jdbc.Driver 作为我所有应用程序的 MSSQL 驱动程序。我在准备好的语句中遇到了性能问题,并且了解到 sendStringParametersAsUnicode=false 应该可以解决问题。不幸的是,我似乎无法让司机接受这个价值。我可以让微软驱动程序 com.microsoft.sqlserver.jdbc.SQLServerDriver 接受参数就好了:
jdbc:sqlserver://servername:1433;databaseName=dbname;sendStringParametersAsUnicode=false
在persistence.xml 和我的ds.xml 中工作。准备好的语句很快,22 秒内 100 条。
但是,我似乎无法从 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
我读到的所有内容都表明 Microsoft 驱动程序较慢,而且我的公司过去曾遇到过问题。如果可能的话,我真的很想使用 JTDS,但不能等待准备好的语句 10 秒!
有人有什么想法吗?
谢谢