JConn4 sybase jdbc驱动程序比JConn2慢得多

问题描述 投票:1回答:1

最近我从JConn2 Sybase驱动程序升级到JConn4。我的Java jdbc代码重复调用proc。使用JConn4,每次proc调用都要慢1000倍。 JConn2的平均值约为2ms。使用JConn4它是~2s。

proc通过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)
java jdbc sybase sybase-ase jconnect
1个回答
0
投票

Jconn2和Jconn4之间的primary change是DYNAMIC_PREPARE参数的默认设置。尝试在connect参数中将其设置为FALSE。

这个页面告诉如何change the DYNAMIC_PREPARE parameter

© www.soinside.com 2019 - 2024. All rights reserved.