-
@Bender Das mit set transaction isolation habe ich gefunden aber nicht verstanden. Heißt das ich mache dann abhängig von meinem Parameter entweder einen SET TRANSACTION ISOLATION LEVEL NO COMMIT den anderen brauche ich ja nicht da ja das automatisch so ist wenn es richtig umgewandelt ist und nachdem meine SQLs durch sind mache ich einen SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ?
-
... dabei muss man sicher sein, das man an einer commit Grenze ist. Aber für deinen Bulk update (wenn es denn einer ist) ist das kein gutes Design.
D*B
-
Was verstehst Du unter BULK-update. Mehrer Sätze? mehrere 1000 Sätze, mehrere Millionen Sätze. Grundsätzlich ist das egal, denn jeder der das Programm verwendet muss wissen was er macht. Deshalb kann er ja sagen mit oder ohne COMMIT. Und was ihr mit Eurer Commit-Grenze meint bin ich mir auch nicht sicher. Was soll das sein? Das ich keinen ENDCMTCTL mache wenn ich noch offene COMMITs habe? oder das ich erst einen COMMIT ausführe wenn ich den Soll und den Haben-Satz geschrieben habe. An dieser Stelle geht es einfach darum, dass wir UPDATES in einer Tabelle ablegen können die nacheinander ausgeführt werden. Die Tabelle hat einen Schlüssel Wenn jetzt jemand das Programm aufruft mit Schlüssel KEY1, werden alle SQLs ausgeführt die unter dem Schlüssel KEY1 augeführt sind. z.B. KEY1 UPDATE DATEI SET STATUS = 'X' WHERE PARTGROUP = 'Y' und dann noch KEY1 UPDATE DATEI SET STATUS = 'V' WHERE PARTGROUP = 'A'. Jetzt entscheidet der der das Programm aufruft ob es ein Problem ist wenn SQL1 ausgeführt wird und SQL2 abbricht. Wenn das kein Problem ist, braucht er meiner Ansicht nach auch keine Commit-Steuerung. Das kann aber nicht ich entscheiden, sondern muss der entscheiden der die SQLs in der Tabelle anlegt und aus seinem Programm aus dann das Programm hier aufruft mit Schlüsselwert um die SQLs auszuführen. Wie gesagt, ich versuche die COMMIT-Steuerung schon immer zu vermeiden wenn ich sie nicht brauche. Und da unterscheide ich nicht zwischen BULK oder gutem Stil oder sonst was. Brauche ich die COMMIT-Steuerung Ja oder Nein. Und es gibt oft die Antwort NEIN.
-
@Bulk update: genau das was ihr hier macht, ist ein typischer Bulk update!Unter commit werden hier alle geänderten Sätze gesperrt, da sind Abbrüche geradezu vorprogrammiert und deadlock Situationen vorprogrammiert.
@Commit Grenze: Unter commit beginnt eine Transaktion mit der ersten Sperre und endet mit dem commit/rollback. Innerhalb der Transaktion sind bestimmte Operationen für den Job nicht durchführbar: ENDCMTCTL, set transaction, disconnect, die gehen nur an einer commit Grenze := außerhalb einer Transaktion.
@commit nein: ohne commit kann z.B. zwischen einem select into und nachfolgendem update von anderen Jobs der Inhalt verändert werden. Commit Steuerung aus Unkenntnis zu vermeiden erzeugt Fehlersituationen, die Daten beschädigen können. Alles was mehr als einen Satz verändert (Umbuchungen, Fortschreibung von Summen etc. (und was tut das nicht) gehört in Transaktionen mit commit geklammert - alles andere ist Murks oder viel komplizierter zu programmieren.
D*B
-
Ich habe jetzt an die SQL-Statements WITH NC ran gemacht wenn keine Commit-Steuerung nötig ist, das ist übersichtlich und funktioniert.
Also für alle die es interssiert
CL hat STRCMTCTL
RPG hat
SET OPTION COMMIT=*CHG
Wenn kein Commit erforderlich ist hänge ich an die SQL-Statements WITH NC dran.
Im CL mache ich dann den COMMIT bei gewünschter Commit-Steuerung
Hinter dem Call ans RPG noch MONMSG und ROLLBACK bei gewünschter Commit-Steuerung
Am Ende wenn das Programm den STRCMTCTL ausgeführt hat macht er auch den ENDCMTCTL
-
@Bender
BULK updates auf mehrer Sätze erfolgen bei uns dann im Nachtablauf. Hier ist der COMMIT nur notwendig wenn alles gemeinsam updgedated sein muss. Sperren sind hier egal, die werden nicht auftreten, weil während des Tagesendjob keine anderen Prozesse laufen
Kleiner Updates eventuell im Laufe des Tages, dann reden wir aber von ein paar Sätzen UND DESHALB BRAUCHE ICH DAS PROGRAMM VARIABLE MIT UND OHNE COMMIT
Und ich habe auch bereits erwähnt. Wenn ich mehrere zusammenhängende Updates brauche dann weiß ich ja im Programm das ich das brauche und mache das ganze MIT COMMIT. Wenn ich keine zusammenhängende Dateien habe mache ich das OHNE COMMIT seit 1987 mit dem VERSTÄNDNIS und OHNE SQL wann ich Sperren oder gemeinsame Updates brauche oder nicht.
in diesem Programm weiß ich es nicht, sondern nur der, der die SQLs in der Tabelle anelegt und anschließend das Programm verwendet.
VIELEN DANK FÜR ALLE INFORMATIONEN. Bin ich immer sehr dankbar darum.
Viele Grüße harkne
-
Das WITH NC ist aber nur dynamisch wenn die SQL's prepared werden und per Execute laufen.
-
@Fuerchau,
OK, danke für die Info, bei mir hat es funktioniert.
Bei mir sieht es so aus. Wobei w@SQL zuvor aus meiner Datei gefüllt wird
PHP-Code:
0154.00 ** 0155.00 c if w@Sql <> *blanks 0156.00 c if Pi@Commit = '0' 0157.00 c eval w@Sql = %trim(w@Sql) + ' WITH NC' 0158.00 c endif 0159.00 c/exec sql 0160.00 c+ EXECUTE IMMEDIATE :w@SQL 0161.00 c/end-exec 0162.00 ** 0163.00 c endif
Similar Threads
-
By mk in forum NEWSboard Programmierung
Antworten: 10
Letzter Beitrag: 09-03-17, 13:09
-
By HEBORA in forum NEWSboard Programmierung
Antworten: 13
Letzter Beitrag: 18-10-15, 20:00
-
By mk in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 23-02-15, 15:57
-
By Willi1 in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 02-05-02, 22:54
-
By lorenzen in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 06-02-01, 10:03
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