Я использовал net.sourceforge.jtds.jdbc.Driver в качестве моего драйвера от MSSQL для всех моих приложений. У меня были проблемы с производительностью в подготовленном операторе, и я узнал, что sendStringParametersAsUnicode = false должно решить проблему. К сожалению, я не могу заставить водителя принять это значение. Я МОГУ заставить драйвер Microsoft com.microsoft.sqlserver.jdbc.SQLServerDriver принять параметр просто отлично:
jdbc:sqlserver://servername:1433;databaseName=dbname;sendStringParametersAsUnicode=false
работает в файле persistence.xml и в моем ds.xml. Подготовленные заявления идут быстро, 100 за 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
Все, что я прочитал, говорит о том, что драйвер Microsoft работает медленнее, и у моей компании были проблемы с ним в прошлом. Я бы очень хотел использовать JTDS, если это возможно, но не могу ждать готового утверждения в течение 10 секунд!
У кого-нибудь были какие-нибудь идеи?
Спасибо