Laufzeitproblem - COMMIT aufteilen?

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
14 Beiträge • Seite 1 von 1
14 Beiträge Seite 1 von 1

Laufzeitproblem - COMMIT aufteilen?

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Moin,

ich habe hier gerade einen Job, der eine Datei abarbeitet, sie (in einer kundeneigenen Transaktion) verbucht und am Schluss einen COMMIT macht. Die Laufzeit ist unter aller Kajüte.

Ich kann am Protokoll erkennen, dass die Buchungen immer "langsamer" werden (immer mehr Zeit brauchen), je mehr Sätze abgearbeitet wurden.

Mein Ansatz wäre, den COMMIT öfter zu machen, damit im Buffer nicht so viel aufläuft. Die Befürchtung ist, dass die Buchungen aufgrund des immer größer werdenden Buffers immer langsamer werden, mit häufigeren COMMITs sollte der nicht so voll laufen.

Ist der Gedanke grundsätzlich richtig oder bin ich auf dem falschen Dampfer?


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Laufzeitproblem - COMMIT aufteilen?

Beitrag von Thomas R. (Expert / 755 / 78 / 34 ) »
Hallo Ralf,
meiner Erwartung nach hast Du die richtige Fahrkarte gelöst.
Durch Commit sollte die Laufzeitverschlechterung pro Buchung wieder zurückgesetzt werden.
Aber warum testest Du das nicht einfach mal in Deinem konkreten Fall aus?

MfG
Thomas R.

Re: Laufzeitproblem - COMMIT aufteilen?

Beitrag von Shortcut IT (ForumUser / 52 / 2 / 18 ) »
Hallo,
Ich kann am Protokoll erkennen, dass die Buchungen immer "langsamer" werden (immer mehr Zeit brauchen), je mehr Sätze abgearbeitet wurden.
ich kann mir vorstellen, dass hier das eigentliche Problem liegt. Erste Vermutung: interne Tabellen, die sich aufblähen und schlechte Zugriffe darauf (bzw. ungeeignete Definition der internen Tabelle(n), fehlende Secondary keys etc.). In dem Fall würde ein zwischendurch abgesetzter zusätzlicher COMMIT WORK keinen Performance-Gewinn bewirken.
Ich würde das eher mal mit der ST12 tracen und dann sehen, wo die Laufzeit verbraucht wird.
Viele Grüße
Shortcut IT

Re: Laufzeitproblem - COMMIT aufteilen?

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Thomas R. hat geschrieben:
09.03.2023 06:42
Aber warum testest Du das nicht einfach mal in Deinem konkreten Fall aus?
Weil gestern in Berlin Feiertag war und ich eine entsprechende Testdatei beschaffen muss. So konnte ich die Zeit wenigstens nutzen, meine Vermutung zu diskutieren.

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Laufzeitproblem - COMMIT aufteilen?

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
Ich nehme nicht für mich in Anspruch, es zu wissen, aber dass ein voller Puffer die Laufzeit verschlechtert, kann ich mir kaum vorstellen. Ich mein, der muss doch irgendwann später sequentiell abgearbeitet werden, also werden da einfach bis zum Commit Datenbanktransaktionen immer hinten drangehängt. Da sollte die millionenste so schnell gehen wie die erste.
Ich kann am Protokoll erkennen, dass die Buchungen immer "langsamer" werden (immer mehr Zeit brauchen), je mehr Sätze abgearbeitet wurden.
Klingt für mich nach einem Memory Leak, als ob Du vergessen hast irgendeine Puffertabelle vor jedem Durchlauf leerzuräumen und sich dadurch geschachtelte Loops hochpotenzieren. Ich denke, Shortcut IT's Ratschlag ist gut: Tracen, wo die Laufzeit entsteht.

Re: Laufzeitproblem - COMMIT aufteilen?

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Also, um das mal klarzustellen: Das Programm ist NICHT von mir. ICH habe GAR NICHTS vergessen ;)


Ralf *dankt für die Hinweise
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Laufzeitproblem - COMMIT aufteilen?

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
DeathAndPain hat geschrieben:
10.03.2023 17:40
Ich nehme nicht für mich in Anspruch, es zu wissen, aber dass ein voller Puffer die Laufzeit verschlechtert, kann ich mir kaum vorstellen.
Tja, da muss ich dich enttäuschen. Ich mache (statt eines COMMITs nach dem LOOP) jetzt einen COMMIT innerhalb des LOOPs. Vorher: Nach zwei Stunden hat der Anwender das Programm entnervt abgebrochen. Nachher: 12 Minuten Laufzeit. ;)


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Laufzeitproblem - COMMIT aufteilen?

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
Mein Tipp: Verbucherbaustein(e).
Wenn es "nur" Datenbankoperationen wären, wäre ich auch der Meinung wie D&P, dass viele Operationen in einer LUW keine bzw. nur geringe Auswirkungen auf die Laufzeit haben dürften.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Laufzeitproblem - COMMIT aufteilen?

Beitrag von ST22 (Specialist / 279 / 43 / 41 ) »
Moin,
Ich habe bei diversen "Alteisen" unserer Entwicklungen ähnliche Erfahrungen gemacht wie Ralf.
Letztlich läuft bei vielen Langläufern oft auch das Memory voll und die UNDO Logs der DB ebenso. Oder das Anwendungslog wird im Speicher aufgebläht.
Es gibt also ein paar Stellen, die evtl. Einfluss nehmen.
Ich persönlich würde jetzt nicht in jedem Loop ein Commit absetzen, sondern mit einem COMMIT Counter arbeiten, hängt alles immer auch vom Mengengerüst ab.
VG
Frank

Re: Laufzeitproblem - COMMIT aufteilen?

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Das "Alteisen" ist zwei Jahre alt - die Entwicklerin ist inzwischen in einer anderen Firma tätig ;)

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Laufzeitproblem - COMMIT aufteilen?

Beitrag von rob_abc (Specialist / 107 / 27 / 44 ) »
Ob der Commit innerhalb oder ausserhalb des Loops ausgelöst wird, kommt doch auch auf die fachliche Anforderung an. Wenn ich die Möglichkeit brauche, dass bei einer fehlerhaften Buchung, alle anderen Buchungen auch nicht durchgeführt werden, dann muss ich Rollback/Commit nach dem Loop machen.

Re: Laufzeitproblem - COMMIT aufteilen?

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Das ist grundsätzlich richtig, aber erstens in diesem Falle nicht nötig und wenn es keine andere Möglichkeit gibt, hat man ein Problem. Fakt ist: Das Programm war mit einem COMMIT nicht benutzbar. Und wenn es erst dadurch benutzbar wird, dass ich den COMMIT in den LOOP schreibe, dann muss ich das erstmal konstatieren.

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Laufzeitproblem - COMMIT aufteilen?

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
Die Frage ist, ob ein einfacher COMMIT WORK ausreicht oder ob es ein COMMIT WORK AND WAIT sein muss. Ich weiß nicht mehr genau, was es war, aber ich kann mich erinnern, zuweilen komische Effekte gehabt zu haben, wenn ich keinen WAIT gemacht habe, auch wenn die nachfolgenden Datenbankoperationen in keiner Weise mit den vorhergehenden zusammengehangen haben.

Mein subjektiver Eindruck war, dass das System sich irgendwie schwer tut, nach einem COMMIT WORK ohne WAIT weitere Operationen in die Warteschlange zu packen, während zeitgleich die vorhergehenden abgearbeitet wurden. Insofern habe ich mir angewöhnt, je nach Situation einen COMMIT WORK nur noch mit WAIT oder gar nicht zu machen. Ich hatte auch nicht das Gefühl, dass mir der WAIT jemals meine Laufzeit nennenswert verschlechtert hätte.

Re: Laufzeitproblem - COMMIT aufteilen?

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Solcherlei Probleme konnte ich nicht feststellen.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Seite 1 von 1

Vergleichbare Themen

0
Antw.
856
Views
6
Antw.
3735
Views
Laufzeitproblem im Select (LIPS/VBUK/VBUP)
von ralf.wenzel » 18.04.2006 10:23 • Verfasst in ABAP® Core
2
Antw.
3126
Views
char-Feld aufteilen
von liberado » 19.07.2007 12:38 • Verfasst in ABAP® für Anfänger
3
Antw.
380
Views
Zeitspanne in Monate aufteilen
von Micha_ela » 16.11.2022 14:14 • Verfasst in ABAP® für Anfänger
2
Antw.
8276
Views
String immer bei einem , aufteilen
von Zubasa » 08.10.2010 13:36 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Regex in where
Gestern von tar 8 / 370
Daten an Tabelle binden
vor 2 Tagen von Bright4.5 3 / 1636
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 288
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 529

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
Gestern von tar 8 / 370
Daten an Tabelle binden
vor 2 Tagen von Bright4.5 3 / 1636
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 288
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 529

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 2 Tagen von snooga87 1 / 221
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3403
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9953