-
Hallo Markus,
fangen wir wieder mit dem einfachen an:
- CPU sollte nach deiner Beschreibung kein Problem sein, auch ersichtlich an den %Werten
- Hauptspeicher sollte auch okay sein, die 1 GB wären allerdings knapp gewesen, wenn das komplett auf der AS gelaufen wäre, die Pagingraten sehen für den Zeitraum gesund aus (Summe der beiden geles. Spalten pro Pool).
- der PC sollte auch kein Bottleneck darstellen, dann wäre auch der Vergleichswert mit MySQL anders ausgefallen
- deine as400 ist deutlich unbalanciert, die zwei langsamen Riesenhühner von Platte sind für die CPU eindeutig zu schlapp; diese Maschine ist für Produktionszwecke nicht geeignet - was immer du damit machst, die macht schlapp und verhält sich ruppig eventuell könnte hier auch der Grund für die Ausreißer liegen (lässt sich nur mit entsprechendem Monitoring erfassen)
- zum messen des Lastverhaltens wäre es sinnvoll den Database Monitor einzusetzen, der einem die Zeiten für jeden einzelnen Datenbankzugriff liefert (Connect, Cursor erstellen, jeden einzelnen fetch etc); diese Messung müsste einem auch die eigentliche Datenbakoperation von dem Geschraube an dem Resultset trennen.
Interessant wäre auch der Vergleich zur traditionellen Variante mit preparedStatement Object und executeUpdate, die JDBC 2.0 Sachen sind teilweise lausig implementiert im Treiber (z.B.: Batch update ist reiner Fake in der Version, bei der ich es probiert habe).
mfg
Dieter Bender
 Zitat von Markus Ralf
Hallo Dieter,
Ich erwarte von der iSeries nicht unbedingt die 0 ms von MySQL. Das Teil hat sonst überhaupt nichts zu tun, läuft allerdings aber auch auf 'nem stinknormalen Büro-PC. Aber 2-3 ms für die iSeries wären schon wirklich gut :-)
Die Zeit-Messung mache ich auf dem PC und zwar nur für die tatschliche Dauer des insertRow(). Source-Code siehe weiter unten. Die aktuellen Zeiten liegen zwischen 0 und 15 ms, mit vereinzelten Ausreißern von etwa 250 ms.
JTOpen 4.5, mit dem "originalen" aus CA V5R2 ist's aber auch nicht wirklich anders.
Ich hoffe, dies sind die gewünschten Werte:
Code:
% CPU benutzt . . . . . : 32,4
% DB-Kapazität . . . . . : 20,6
System Pool- Reserv. Max. -DB-Seiten-- --Nicht-DB--
Pool Größe(M) Größe (M) Aktiv fehl. geles fehl. geles
1 115,81 60,55 +++++ 0,0 0,0 3,2 3,2
2 834,62 0,66 124 0,7 5,2 2,0 3,8
3 52,77 <.01 26 0,0 0,0 0,1 0,1
4 10,13 0,00 8 0,0 0,0 0,0 0,0
System Pool- Reserv. Max. Aktiv-> Warten-> Aktiv->
Pool Größe(M) Größe (M) Aktiv Warten n.wählb. n.wählb.
1 115,81 60,55 +++++ 21,4 0,0 0,0
2 834,62 0,66 124 527,1 0,0 0,0
3 52,77 <.01 26 3,9 0,0 0,0
4 10,13 0,00 8 0,0 0,0 0,0
Ein- Größe %be- E/A Anford. Lese Schrb. Lesen Schrb %ver-
heit Typ (M) legt Anf. Größe(K) Anf. Anf. (K) (K) wend.
1 6719 35165 40,9 8,2 9,2 1,9 6,3 17,6 6,7 2
2 6719 35165 41,1 12,9 6,8 1,8 11,0 6,8 6,8 10
Direkte JDBC-Anwendung zum Server, ohne zwischengeschalteten AppServer, kein RPG im Spiel, Programm läuft auf einem PC ab - und letzterer kann die Bremse nicht sein: AMD Athlon XP 3000+ mit 1 GB RAM, hat während der Testzeit genau wie die iSeries sonst nix zu tun. Hier mal mein Testprogramm:
Code:
package Test;
import com.ibm.as400.access.*;
import java.sql.*;
public class TestSqlInsert {
public TestSqlInsert() {
try {
DriverManager.registerDriver(new com.ibm.as400.access.AS400JDBCDriver());
Connection conn = DriverManager.getConnection("jdbc:as400://meinServer/$$FILE;extended metadata=false");
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
conn.setAutoCommit(false);
for (int x=1; x<=10; x++) {
ResultSet rs = stmt.executeQuery("Select * From LABDTA00");
for (int i=1; i<=100; i++) {
rs.moveToInsertRow();
rs.updateString("LDSA", "LD");
rs.updateInt("LDAUFN", 123);
rs.updateDate("LDDATUM", new java.sql.Date(2004, 11, 25));
rs.updateInt("LDLFDNR", i);
rs.updateString("LDUSER", "User");
rs.updateString("LDMENUEID", "xyz");
rs.updateString("LDBLOCKID", "abc");
rs.updateString("LDFELDID", "qqq");
rs.updateString("LDDATEN", "Daten");
long start = System.currentTimeMillis();
rs.insertRow();
System.out.println("time " + (System.currentTimeMillis() - start));
}
conn.commit();
stmt.execute("Delete From LABDTA00 Where LDAUFN = 123");
conn.commit();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
new TestSqlInsert();
System.exit(0);
}
}
Markus
Similar Threads
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 11:15
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 15:53
-
By malzusrex in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 19-09-06, 12:04
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 15:11
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 10: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