PDA

View Full Version : AS400 zu langsam?



infomio
13-06-01, 13:31
von Windoof-PCs über BDE(Borland Delphi) und Client Access dauern die Zugriffe auf AS400 viel zu lange!!!

Wie kann ich Transaktionen kapseln??

Normalerweise:
StartTransaction;
Rollback oder Commit;
Geht aber auf AS400 nicht!

Hubert
24-08-03, 20:04
Was geht auf der AS/400 nicht?

Selbstverständlich ist ein Rollback und Commit möglich.

Voraussetzungen:

1. Alle Dateien, die im Programm zum update verwendet werden, müssen journalisiert sein.

2. Vor dem Öffnen der Dateien (bzw. dem Programmstart) muss der CL Befehl STRCMTCTRL die Transaktionskontrolle einleiten.

3. Nach dem Schliessen der Programme bzw. nach dem Programmende wird die Transaktionkontrolle mit dem Befehl ENDCMTCTRL wieder beendet.

Im Programm wird bei COMMIT bzw. ROLLBACK die Transaktion abgeschlossen und eine neue Transaktion gestartet.

Gruss

Hubert

Fuerchau
25-08-03, 09:50
Hier werden 2 Themen vermischt:

1. Dauer der Zugriffe
Dieses Thema wurde schon mehrmals behandelt und ist immer wieder das gleiche Problem. Wenn in der WHERE-Klausel keine Schlüsselfelder angegeben werden, ist die AS/400 gezwungen ggf. über die ganze Datei zu scannen. Seit V5 wird auch kein temporärer Index mehr erstellt.
Also darauf achten, dass in der WHERE-Bedingung vorhandene Schlüssel verwendet werden (DSPDBR).
Fehlt ein Zugriff, kann dieser mittels CREATE INDEX oder aus DDS per CRTLF jederzeit hinzugefügt werden.

2. Transaktionen
Wenn die Dateien auf der AS/400 journalisiert werden (CRTJRN, CRTJRNRCV, ADDPFJRN usw.) kann auch mit Transaktionen gearbeitet werden.
Die wenigsten Anwendungen auf AS/400 verwenden aber Journale, daher muss bei der ODBC-Verbindung Commitment *NONE eingetragen werden.
Ein STRCMTCRTL bzw. ENDCMTCTRL ist nicht erforderlich, da dies der DB-Serverjob automatisch erledigt.

Anmerkung: geschachtelte Transaktionen sind nicht möglich !