使用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