PDA

View Full Version : ODBC performance



usafft
08-09-05, 12:43
Hallo,

wir haben hier eine schön alte 620 mit V5R1.
Jetzt kam die große tolle Idee, das alte Warenwirtschaftssystem mit der CAD Datenbank und einigen anderen Auswertungen zu kombinieren.
Prinzipiell ist das auch kein Problem; basierend auf PHP lassen sich die diversen Datenbanken (u.A. MySQl und DB2) schön anbinden und
die Ergebnisse der Testdaten sehen vielversprechend aus.

Jetzt kommt der große Haken an der Sache; die Performance. Ich habe leider überhaupt keine Ahnung von den AS400 Internas und wundere
mich doch sehr, dass eine Interne Abfrage binnen Sekunden einen Join über mehrere Tabellen fahren kann (zumindest mutest es so an, aber
wer weiss, wie die Daten im Vorraus aufbereitet oder gecached werden? Stichwort virtuelle Dateien?), per Client Access ODBC Treiber
(Version 8.00.00.00) aber Ewigkeiten dauert.

Wo liegt da der Flaschenhals? Kann man die zu durchsuchende Datenmenge im Vorraus eingrenzen? Ist das Fehlen von Indizes in den Tabellen
eine Designsache des Warenwirtschaftsystems oder werden die bei externen Abfragen "ausgeblendet"?

Hat jemand praktische Erfahrungen zu diesem Thema?

Uli

Fuerchau
08-09-05, 13:54
Das hängt nun sehr stark von der lokalen Anwendung ab, ob die "Abfragen" schnell sind oder nicht. Wird nämlich kein SQL verwendent, kann ein Programm über LF's und Logik sehr schnell die Daten finden.

Bei SQL sieht's etwas anders aus.
Probiere die gewünschten ODBC-SQL's lokal auf der AS/400 per STRSQL aus.
Ggf. vorher per STRDBG die Hinweise zum Anlegen von Indizees befolgen.

KM
08-09-05, 14:39
Hallo Uli,

auch ich bin gerade dabei unsere iSeries-Datenbanken mit PHP via ODBC "anzuzapfen" und diverse Auswertungen zu fahren. Und ich muß sagen, dass der Zugriff extrem schnell ist. Egal, ob ich per SQL-Select die Daten hole oder eine Stored Procedure aufrufe, die dann per RPG-Logik über eine LF (so wie es Fuerchau beschrieben hat) die Daten ermittelt. Die Antwortzeiten sind bei beiden Varianten sehr kurz. Es hängt natürlich davon ab, wie groß Deine Dateien sind bzw. welche Datenmengen Du verarbeitest.

Gruß,
KM

Fuerchau
08-09-05, 14:58
@KM
Die Datenmengen spielen nur dann eine Rolle, wenn ich mehrere tausend Sätze per Abfrage bearbeiten muss, also z.B. GROUP BY verwende.
Ansonsten ist die Datenmenge eher unerheblich, wenn man aus Millionen Sätzen per Schlüssel einige wenige Sätze abfragt.
Entscheidend ist natürlich eine geschickte Abfrage und -logik und immer wieder Indexe, Indexe, Indexe !

rcramer
12-09-05, 09:53
Hallo,
wir setzen eine Lohn- und Gehalts- Software unter Windows ein und bedienen auch die DB2/400. Unsere Erfahrungen bringen genau das was Herr Fuerchau auch schon bestätigt das je nach Aufbau der Abfrage eventuell weitere Indexe von Nutzen sein können.
Wenn wir Performensprobleme haben arbeiten wir mit SQL-Pakete und analysieren danach die Indexe mit denen die AS400 arbeitet um neue auf zu bauen.
Gruß
Reinhold