JConn4 Sybase JDBC драйвер значительно медленнее, чем JConn2 - PullRequest
0 голосов
/ 07 сентября 2018

Недавно я обновил драйвер JConn2 Sybase до JConn4. Мой код Java jdbc неоднократно вызывает proc. Каждый вызов в ~ 1000 раз медленнее с JConn4. JConn2 среднее значение составляет ~ 2 мс. С JConn4 это ~ 2 с.

Процесс вызывается через CallableStatement.

Кто-нибудь знает, есть ли какие-либо свойства соединения, которые изменились с JConn4, которые, возможно, необходимо установить, чтобы устранить эту проблему производительности?

Это среда Linux.

Я взял дамп потока, и все, что я вижу, это следы, подобные этому:

java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
        at java.net.SocketInputStream.read(SocketInputStream.java:171)
        at java.net.SocketInputStream.read(SocketInputStream.java:141)
        at com.sybase.jdbc4.timedio.RawDbio.reallyRead(RawDbio.java:404)
        at com.sybase.jdbc4.timedio.Dbio.doRead(Dbio.java:257)
        at com.sybase.jdbc4.timedio.InStreamMgr.readIfOwner(InStreamMgr.java:583)
        at com.sybase.jdbc4.timedio.InStreamMgr.doRead(InStreamMgr.java:319)
        at com.sybase.jdbc4.tds.TdsProtocolContext.getChunk(TdsProtocolContext.java:622)
        at com.sybase.jdbc4.tds.PduInputFormatter.readPacket(PduInputFormatter.java:239)
        at com.sybase.jdbc4.tds.PduInputFormatter.read(PduInputFormatter.java:72)
        at com.sybase.jdbc4.tds.TdsInputStream.read(TdsInputStream.java:91)
        at com.sybase.jdbc4.tds.TdsInputStream.readUnsignedByte(TdsInputStream.java:124)
        at com.sybase.jdbc4.tds.Tds.nextResult(Tds.java:2912)
        at com.sybase.jdbc4.jdbc.ResultGetter.nextResult(ResultGetter.java:78)
        at com.sybase.jdbc4.jdbc.SybStatement.nextResult(SybStatement.java:293)
        at com.sybase.jdbc4.jdbc.SybStatement.nextResult(SybStatement.java:275)
        at com.sybase.jdbc4.jdbc.SybStatement.executeLoop(SybStatement.java:2827)
        at com.sybase.jdbc4.jdbc.SybCallableStatement.execute(SybCallableStatement.java:244)

1 Ответ

0 голосов
/ 08 сентября 2018

Первичное изменение между Jconn2 и Jconn4 является настройкой по умолчанию для параметра DYNAMIC_PREPARE. Попробуйте установить его в FALSE в параметрах подключения.

На этой странице рассказывается, как изменить параметр DYNAMIC_PREPARE .

...