2017-10-05 6 views
1

J'essaye d'insérer par lots et de mettre à jour en utilisant hibernate dans la base de données informix. Mais je ne suis pas en mesure de trouver si les inserts sont effectivement en lot ou non. Y at-il une propriété que nous devons définir pour obtenir les journaux des instructions sql. Par exemple: Dans mysql, nous utilisons profileSQL = true J'ai essayé de définir SQLIDEBUG = filePath dans l'URL de connexion mais le fichier était illisible. Existe-t-il un autre moyen d'obtenir les journaux SQL afin que je puisse vérifier si les insertions et les mises à jour sont groupées.Hibernate Batch Insert dans la base de données Informix (Obtenir la trace du journal sql)

En outre, quelle version de pilote informix serait insérer et mettre à jour par lots correctement. En MySql, j'ai observé que le connecteur MySql 5.1.28 ne fonctionnait pas correctement alors que le 5.1.18 fonctionnait correctement. Y a-t-il un problème similaire avec informix?

Répondre

4

Pour lire (décoder) le fichier SQLIDEBUG, vous avez besoin d'un outil inclus dans le package Informix CSDK. Sous Windows est nommé 'sqliprt.exe', sous Linux/Unix/everythingelse est 'sqliprint' Vous l'avez peut-être déjà dans le répertoire bin du serveur IDS car CSDK est généralement installé avec le moteur.

Un exemple rapide:

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> 

Le 'sqlitrace.txt' devrait être un fichier texte brut. Si vous voyez des messages SQ_PUT comme celui ci-dessous, cela signifie essentiellement que vous faites une mise à jour batch:

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

plutôt que des inserts individus. Tout pilote informix récent devrait fonctionner avec les opérations par lots. mais je suggère de rester à la dernière (4.10.9)

Ils peuvent être trouvés via Maven ou via votre site de téléchargement IBM.

Gradle

compile group: 'com.ibm.informix', name: 'jdbc', version: '4.10.9' 

Maven

<dependency> 
<groupId>com.ibm.informix</groupId> 
<artifactId>jdbc</artifactId> 
<version>4.10.9</version> 
</dependency> 
+0

J'utilise pilote jdbc Informix Quelle version dois-je utiliser? \t jdbc \t ifxjdbc ANKIT

+0

la dernière qui est 4.10.9, optez pour celui-là. –