Informix数据库中的Hibernate批量插入(获取sql日志跟踪)

ANK*_*KIT 1 informix hibernate

我试图在informix数据库中使用hibernate批量插入和更新.但是我无法确定插件是否实际已经批处理.我们需要设置任何属性来获取sql语句的日志.例如:在mysql中,我们使用profileSQL = true我尝试在连接URL中设置SQLIDEBUG = filePath但该文件不可读.有没有其他方法来获取SQL日志,以便我可以验证是否批量插入和更新.

此外,informix驱动程序版本将批量插入和更新正确.在MySql中,我观察到,当5.1.18正确批处理时,MySql连接器5.1.28没有正确批处理.informix有类似的问题吗?

jsa*_*era 5

要读取(解码)SQLIDEBUG文件,您需要Informix CSDK包中包含的工具.在Windows上命名为'sqliprt.exe',在Linux/Unix/everythingelse上是'sqliprint'你可能已经在IDS服务器bin目录中有它,因为CSDK通常与引擎一起安装.

一个简单的例子:

D:\Infx\work\Java>javac batchdec.java

D:\Infx\work\Java>del sqlitra*

D:\Infx\work\Java>java batchdec
        257     0.000
        258     0.000
        259     0.000
        260     0.000



D:\Infx\work\Java>which sqliprt
D:\infx\csdk410tc4\bin/sqliprt.exe

D:\Infx\work\Java>sqliprt -notimestamp -tuple sqlitrace1507202847283.0 > sqlitrace.txt

D:\Infx\work\Java>
Run Code Online (Sandbox Code Playgroud)

'sqlitrace.txt'应该是纯文本文件.如果您看到如下所示的SQ_PUT消息,则基本上意味着您正在进行批量更新:

----- sqlitrace.txt -----
.....
C->S (70)           
    SQ_ID
        1
    SQ_CURNAME
         "_ifxc0000000000001" [18]
    SQ_OPEN
    SQ_PUT
        Size of data row: 7
        # rows..........: 4
================================================================================
HEX DUMP:
       0:  c1 00 00 00 00 00 00 00 c1 00 00 00 00 00 00 00  ................
    0x10:  c1 00 00 00 00 00 00 00 c1 00 00 00 00 00 00 00  ................

================================================================================
    SQ_EOT

S->C (48)           
    SQ_INSERTDONE
        0
    Bigserial:0
    SQ_DONE
        Warning..: 0x10
        # rows...: 4
        rowid....: 261
        serial id: 0
    SQ_COST
        estimated #rows: 1
        estimated I/O..: 2
    SQ_EOT
Run Code Online (Sandbox Code Playgroud)

而不是个人插入.任何最近的informix驱动程序都应该使用批处理操作.但我建议坚持最新的(4.10.9)

可以通过Maven或IBM下载站点找到它们.

摇篮

compile group: 'com.ibm.informix', name: 'jdbc', version: '4.10.9'
Run Code Online (Sandbox Code Playgroud)

Maven的

<dependency>
<groupId>com.ibm.informix</groupId>
<artifactId>jdbc</artifactId>
<version>4.10.9</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)