Hallo Forum,

nachdem ich hier schon im Forum nach dem Problem gesucht habe und immer noch nicht fündig geworden bin, hier meine Bitte um Hilfe. Das Problem ist die performance beim schreibenden JDBC Zugriff. Ich erstelle mir eine Tabelle mit

CREATE TABLE SQLTEST (FLD1 CHAR (10 ) NOT NULL WITH
DEFAULT, FLD2 CHAR (10 ) NOT NULL WITH DEFAULT)

Wenn ich jetzt mit SQL COBOL 10.000 Sätze in die Tabelle einfüge, dauert das ca. 1s. Auszug :

PERFORM WITH TEST AFTER UNTIL V-ZAEHLER > 10000
EXEC SQL
INSERT INTO SQLTEST
VALUES ("FLDA", "FLDB")
END-EXEC
ADD 1 TO V-ZAEHLER
END-PERFORM.

Mache ich dasselbe mit einem JAVA-programm, dauert das ganze 19s. Ohne Verwendung von ProparedStatements noch länger. Der Sourcecode sieht so aus :

int j = 0;
try {
PreparedStatement ps = AS400.prepareStatement("INSERT INTO sqltest VALUES(?, ?)");

for (int i = 0;i<10000;i++) {
ps.setString(1, "FLDA");
ps.setString(2, "FLDB");
ps.addBatch();
j++;
if (j==1000) {
ps.executeBatch();
j=0;
}
}
} catch (Exception ex) {
ex.printStackTrace();

}

Was läuft hier verkehrt ? Habe das Gefühl das bei jedem executBatch schon auf die Tabelle der iSeries zugegriffen und ein ODP erstellt wird. Allerdings ist die Maschine während des ganzen Vorganges nicht ausgelastet. CPU <10%, kein Paging, nichts. Version 5.2 ist im Einsatz auf einer 810. Das Problem triff aber genau so auf einer 870 mit 5.3 und einer 170 mit 5.2 auf.
Bin ratlos und für jeden Tip dankbar.