-
DAS ist eben der Unterschied !
Normalerweise dürfte NUR DIE 1. Anweisung zu sehen sein (das ist so, wenn ich z.B. vom PC per ODBC mit VB/VBA zugreife).
Es sieht also so aus, dass Java den SQL eben immer neu zusammenbaut und daher Prepared AUF DER AS/400 nicht läuft. Scheinbar gilt der Prepared nur intern für Java.
Suche da mal nach Möglichkeiten !
Kannst du ggf. einstellen, dass ein SQLPKG (SQL-Paket) verwendet werden soll ?
PS:
ExecuteBatch ist eine reine Java/DAO/ADO-Funktion und hat mit SQL rein gar nichts zu tun.
Der Speicherüberlauf passiert ja auf dem PC und nicht auf der AS !
Das Sammeln der SQL's wird rein durch die SQL-Runtime durchgeführt.
-
Hi!
Hab Dein Beispiel mal etwas angepasst und bei uns laufen lassen.
Bei uns dauert das zw. 3-5 Sekunden.
Ich habs hier getestet mit JTOpen 4.8 und V5R3 auf ner
520. Sicher das alle PTF's unter OS/400 installiert sind und die akt. JDBC Treiber benutzt werden?
Zeiten:
Starte: Mon Sep 05 19:20:15 CEST 2005
JDBC init: Mon Sep 05 19:20:16 CEST 2005
Create Table: Mon Sep 05 19:20:16 CEST 2005
Insert 10.000: Mon Sep 05 19:20:19 CEST 2005
Close: Mon Sep 05 19:20:19 CEST 2005
Dein Beispiel:
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.util.Date;
/**
* @author xxx
*
*/
public class Test {
/**
*
*/
public Test() {
super();
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String args) {
long start = System.currentTimeMillis();
try{
DriverManager.setLogWriter( new PrintWriter(System.out) );
Class.forName( "com.ibm.as400.access.AS400JDBCDriver" );
Connection con = DriverManager.getConnection("jdbc:as400://xxx.xxx.xxx.xxx/qsys.lib/xxxx.lib/","xx", "xx");
Statement stmt = con.createStatement();
long init = System.currentTimeMillis();
try{
stmt.execute(" CREATE TABLE xxxx.SQLTEST (FLD1 CHAR (10 ) NOT NULL WITH DEFAULT, FLD2 CHAR (10 ) NOT NULL WITH DEFAULT) ");
}catch(Exception e){
System.err.println("Fehler: "+e.getMessage());
}
long create = System.currentTimeMillis();
PreparedStatement ps = con.prepareStatement("INSERT INTO nslib.sqltest VALUES(?, ?)");
for (int i = 0; i<10000;i++) {
ps.setString(1, "FLDA");
ps.setString(2, "FLDB");
ps.addBatch();
}
ps.setString(1, "FLDA");
ps.setString(2, "FLDB");
ps.executeBatch();
long insert = System.currentTimeMillis();
stmt.close();
con.close();
long close = System.currentTimeMillis();
System.out.println("Starte: " + new Date(start));
System.out.println("JDBC init: " + new Date(init));
System.out.println("Create Table: " + new Date(create));
System.out.println("Insert 10.000: " + new Date(insert));
System.out.println("Close: " + new Date(close));
}
catch(Exception e){
e.printStackTrace();
System.err.println("Fehler: " + e.getMessage());
System.exit(1);
}
System.exit(0);
}
}
Ciao
Nili
-
Sag ich doch, Java ca. 3-5 Mal länger !
-
PTF's sind alle drin (V5R2) Ich vermute mal das es am Treiber liegt. Werds morgen gleich mal testen. Habe bisher immer nur die "mitgelieferten" jt400 Treiber aus dem IFS benutzt. Kann nur so sein. Hoffe ich.
-
@Nili,
ist Deine Programm direkt auf der /400 gelaufen oder auf einem externen PC ? Und mit welcher .jar-Datei ? jt400 oder jt400native ?
THX
-
Hi!
Habs von einem PC laufen lassen. Verwendet JTOpen 4.8 mit Java 1.5.
JTOpen bekommst Du unter https://sourceforge.net/projects/jt400. Aus dem Zip-File brauchst Du nur jt400.jar.
Ciao
Nili
-
Moin!
Hab mir mal den Spass gemacht und es auf der i5 laufen lassen.
Lief mit Java 1.4.2 und JTOpen 4.8. Zusätzlich hab
ich den LogWriter deaktiviert, sonst war es unerträglich.
Ergebnis i5:
Erstlauf war ne Katastrophe hat 3 Minuten gedauert.
Danach hat es sich eingependelt auf ca. 6 Sekunden (auch auf verschiedenen QShell-Sitzungen).
Starte: Tue Sep 06 10:13:05 UTC 2005
JDBC init: Tue Sep 06 10:13:08 UTC 2005
Create Table: Tue Sep 06 10:13:08 UTC 2005
Insert 10.000: Tue Sep 06 10:13:11 UTC 2005
Close: Tue Sep 06 10:13:11 UTC 2005
i5 mit jt400Native.jar:
Erstlauf wieder schlecht mit 33 Sekunden danach gings:
Starte: Tue Sep 06 10:24:55 UTC 2005
JDBC init: Tue Sep 06 10:24:57 UTC 2005
Create Table: Tue Sep 06 10:24:58 UTC 2005
Insert 10.000: Tue Sep 06 10:25:01 UTC 2005
Close: Tue Sep 06 10:25:01 UTC 2005
Irgendwie kein grosser Unterschied???
P.S. Nur so nebenbei, wenn ich den LogWriter auch auf PC rausnehme komme ich auf ne Zeit von ca. 1-2 Sekunden immer.
Ciao
Nili
-
@Nili,
dann versuchs doch mal mit einen CRTJVAPGM OPTIMIZE(40) Dann rennen die Programme normalerweise wie der Teufel. Außerdem : Wenn Du Dich "normal" identifiziert hast, gehst Du aus der AS400 raus und wieder rein. Das kannst Du umgehen, indem Du als Adresse LOCALHOST und als Benutzer / kennwort *CURRENT *CURRENT verwendest. Aber kann ja sein das weißt Du alles schon
Zudem dauert das Laden der qsh ja schon einige Zeit. Wenn Du also mit RUNJVA arbeitest, musst Du die Vorlaufzeit abziehen.
-
Hi!
Ne, ne hab immer die reine Laufzeit des Connect, Insert, Close gemeint. Inder Qshell hab ich mich schon befunden. Wenn Du auf die Timestamps schaust siehst Du ja, dass der reine Insert nur ca. 3 Sekunden dauert. Auf optimieren hatte ich keine Lust und Zeit mehr.
Ist Dein Ergebnis mit JTOpen 4.8 nun besser geworden?
Ciao
Nili
Similar Threads
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 10:15
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 14:53
-
By malzusrex in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 19-09-06, 11:04
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 14:11
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks