[Frage] Wie lange hält SELECTLATESTVERSION

Bild Microsoft Dynamics NAV 2018

[Frage] Wie lange hält SELECTLATESTVERSION

Beitragvon Rene.Kern » 30. Juli 2021 14:40

Hallo Community,

Ich habe folgendes Problem. Bei einer parallelen Massenstapelverarbeitung kam es vermehrt zu merkwürdigen temporären Fehlern, die darauf schließen lassen, dass veraltete Daten aus dem Chache genutzt worden. SELECTLATESTVERSION soll ja bekanntlich helfen und tatsächlich hat das die Anzahl der Fehler stark veringert. Allerdings sind sie immer noch vereinzelt vorhanden. Es scheint also, dass die Wirkung des Befehls irgendwann aufhört und die Routine wieder auf gechachte Daten zugreift. Nun will ich aber nicht in allen Unterfunktionen irgendwo SELECTLATESTVERSION einfügen. Ich habe mich dahingehend schon immer gefragt wie lange die Wirkungsdauer des Befehls ist. Kann man das überhaupt so pauschal beantworten? Was würdet ihr vorschlagen wie ich hier vorgehe?

Grüße René
Rene.Kern
 
Beiträge: 22
Registriert: 12. Juli 2011 11:37
Realer Name: Rene
Arbeitsort: Halle/Saale
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: [Frage] Wie lange hält SELECTLATESTVERSION

Beitragvon SilverX » 30. Juli 2021 17:20

Meiner Meinung nach wird der erste (lesende) Zugriff direkt zu erneutem caching fĂĽhren.

Werden also während der Verarbeitung extern Daten geändert, kann es zu diesem Verhalten kommen.
Cheers
Carsten


This post is my own opinion and does not necessarily reflect the opinion or view of my employer.
SilverX
Microsoft Partner
Microsoft Partner
 
Beiträge: 1252
Registriert: 16. September 2006 14:07
Realer Name: Carsten Scholling
Arbeitsort: GĂĽtersloh
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2013+

Re: [Frage] Wie lange hält SELECTLATESTVERSION

Beitragvon Rene.Kern » 2. August 2021 13:42

Hallo,

vielen Dank fĂĽr die RĂĽckmeldung. Das dachte ich mir leider schon. Ich werde das Problem also weiter beobachten.

Grüße René
Rene.Kern
 
Beiträge: 22
Registriert: 12. Juli 2011 11:37
Realer Name: Rene
Arbeitsort: Halle/Saale
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: [Frage] Wie lange hält SELECTLATESTVERSION

Beitragvon Timo Lässer » 2. August 2021 16:57

Rene.Kern hat geschrieben:Bei einer parallelen Massenstapelverarbeitung

Ich vermute mal ganz stark, dass genau dieser Punkt die Ursache ist.
Ihr mĂĽsst irgendwie sicherstellen, dass diese Massenstapelverarbeitungen nicht zur gleichen Zeit die gleichen Daten in die Finger bekommen.

Entweder arbeitet ihr mit Tabellensperren (die möglichst zeitnah mittels COMMIT wieder aufgehoben werden), oder ihr müsst auf andere Art und Weise sicherstellen, dass die Stapelverarbeitungen sich nicht ins Gehege kommen können.

Wenn es sich um unterschiedliche Stapelverarbeitungen handelt, die von der Aufgabenwarteschlange gestartet werden, mĂĽsst ihr die AusfĂĽhrungszeiten so legen, dass sie niemals zur gleichen Zeit aktiv sind, sondern immer mindestens eine Minute zwischen dem Ende der einen und dem Start der anderen auseinanderliegen.
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! DafĂĽr ist dieses Forum da.
Hier kannst du fĂĽr MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5274
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21

Re: [Frage] Wie lange hält SELECTLATESTVERSION

Beitragvon Rene.Kern » 10. August 2021 13:20

Timo Lässer hat geschrieben:Ihr müsst irgendwie sicherstellen, dass diese Massenstapelverarbeitungen nicht zur gleichen Zeit die gleichen Daten in die Finger bekommen.

Entweder arbeitet ihr mit Tabellensperren (die möglichst zeitnah mittels COMMIT wieder aufgehoben werden), oder ihr müsst auf andere Art und Weise sicherstellen, dass die Stapelverarbeitungen sich nicht ins Gehege kommen können.

Wenn es sich um unterschiedliche Stapelverarbeitungen handelt, die von der Aufgabenwarteschlange gestartet werden, mĂĽsst ihr die AusfĂĽhrungszeiten so legen, dass sie niemals zur gleichen Zeit aktiv sind, sondern immer mindestens eine Minute zwischen dem Ende der einen und dem Start der anderen auseinanderliegen.


Du hast richtig vermutet. Ich nutze die Aufgabenwarteschlangenposten (AWP) aber unterteile meinen Container der Massendaten in verdauliche Häppchen auf mehrere AWPs auf. Dann schreibe ich die ID des AWP an die Containerzeile, sodass ich sicher sein kann, dass 2 AWPs nicht die selbe Rechnung am Wickel haben. Nach jedem Teilschritt wird immer auch ein Commit gemacht, da Einzelschritte in Codeunit-OnRun-Trigger ausgelagert sind damit ich dort enthaltene Fehlermeldungen abkapseln kann und als Fehlerbeschreibung an meine Containerzeile schreiben kann. Es erfolgen in sehr kurzen Abständen eigentlich immer recht schnell Commits.
Oder meinst du mit "Daten" nicht den einzelnen Datensatz, sondern ganze Tabellen? Tabellensperren wollte ich eigentlich nicht so gern nutzen, da a) der Effekt der parallelen Abarbeitung dadurch ja irgendwie verloren geht und b) ich dann für einen Buchungsvorgang sehr viele Tabellen sperren müsste, was ich so noch nichtmal vollumfänglich bewerten kann, welche Tabellen aufgrund der doch umfangreichenden Anzahl da alles mit reinspielt.
Rene.Kern
 
Beiträge: 22
Registriert: 12. Juli 2011 11:37
Realer Name: Rene
Arbeitsort: Halle/Saale
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: [Frage] Wie lange hält SELECTLATESTVERSION

Beitragvon fiddi » 10. August 2021 13:38

Hallo,

Ich verstehe immer nicht, wie das Buchen (=> schreiben) von Daten in die gleichen Tabellen dadurch schneller wird, das man sie auf mehrere Prozesse verteilt, die man man auch noch synchronisieren muss? Im Falle der Buchungsroutinen bedeutet das auch noch, das Daten regelmäßig zwischen den Servicetiers synchronisiert werden müssen, weil mal der eine, mal der andere Prozess die letzte "Entry No." der Posten im Cache hat.

Kann mir das mal jemand erklären?

Ich könnte das ja noch verstehen, wenn es Prozesse wären, die viel bzw. nur lesen und auf unterschiedlichen Maschinen laufen. Das macht für Planungsläufe und Statistiken aus meiner Sicht sehr viel mehr Sinn, die auf unterschiedliche Aufgabenwarteschlangen zu verteilen.

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: [Frage] Wie lange hält SELECTLATESTVERSION

Beitragvon Rene.Kern » 11. August 2021 09:24

Hallo,

naja vermutlich ist der Effekt nur theoretischer Natur, da meine Massenverarbeitung noch nicht in einer ausreichenden Produktivumgebung gelaufen ist. Das Modul ist noch recht neu und Livetests sind noch nicht in dem Umfang gelaufen um plausible Vergleichsmöglichkeiten zu haben. Theoretisch schreibt aber ein Buchungsprozess eines Bescheides unseres Moduls (in der Branche Wasserwirtschaft --> ein Bescheid beinhaltet mehrere Verkaufsrechnungen/Gutschriften) nicht zur selben Zeit die selben Tabellen weil mehrere Berechnungsteilschritte erledigt werden müssen, die unterschiedliche Tabellen lesend und schreibend bearbeiten. So können zumindest theoretisch mehrere Bescheide parallel verarbeitet werden. Sollten Satzsperren auftreten, wird das von der Massenverarbeitung auch erkannt und die Zeile wird später nochmal versucht zu bearbeiten. Nach ersten Performancetests mit unterschiedlichen Anzahl an parallelen Sitzungen hatte sich zuerst herauskristalisiert, das zwei parallele abarbeitungssitzungen schneller sind als eine, aber auch schneller als mehr Sitzungen, da dann zu viele Buchungen durch Satzsperren nochmal behandelt werden müssten. Der Unterschied zwischen 1 und 2 Sessions war zwar nicht so enorm, aber durchaus spürbar. Aber gut letztlich kann ich mich damit auch abfinden, dass wenn die Parallelität die Ursache sein sollte, das Feature wieder auszubauen.

Grüße René
Rene.Kern
 
Beiträge: 22
Registriert: 12. Juli 2011 11:37
Realer Name: Rene
Arbeitsort: Halle/Saale
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV


ZurĂĽck zu NAV 2018

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast