[NEWSboard IBMi Forum]
Seite 2 von 2 Erste 1 2

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.370
    Before-Trigger => du hast noch die Chance (falls erlaubt bei externen Triggern) Daten zu manipulieren um Constraints zu befriedigen (setzen Primary Key, Laden Fremdschlüssel, u.ä.)
    After-Trigger => wird erst aufgerufen, wenn alle Contraints (Unique Key/Index, Not Null,Check, Ref ...) positiv beschieden sind. Eine Änderung der Daten ist nicht mehr zugelassen.

    Beim SQL-Server hat man da eben keine Chance, deshalb wird dort häufig der Einsatz von Prozeduren für Insert/Update empfohlen. Was allerdings nicht unerheblichen Mehraufwand bedeutet und die Unterstützung von EF erschwert.
    Wird beim After-trigger dann doch noch ein Update gemacht, wird dann bei tatsächlichen Änderungen des aktuellen Satzes noch die "Satzversionen" für die Transaktionen aktiviert werden.
    Häufig wird dann auch noch vergessen, dass ja durchaus mehr als 1 Zeile betroffen wurde.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  2. #2
    Registriert seit
    Mar 2019
    Beiträge
    36
    Zitat Zitat von BenderD Beitrag anzeigen
    ...dieses Detailproblem lässt sich auch mit einer Umsetzungstabelle und Views lösen.
    Zentral wäre für mich allerdings zuerst die massive Stundendifferenz zu verstehen, bevor man versucht im nachgelagerten Bereich zu optimieren.

    D*B
    Danke BenderD,
    dass ist das was ich verstehen will.
    Warum läuft der Insert über ein select mit Umsetzung des Datums und der Uhrzeit über die Funktion in 16 Minuten durch und der Insert über den Trigger ohne Umsetzung des Datums mit Uhrzeit (also die Funktion wird definitiv nicht aufgerufen) verlängert die Laufzeit des RPG-Programms von 12 Min auf ein Vielfaches.Das Verstehe ich nicht. Wenn wir hier über doppelte Laufzeiten reden würden oder auch die Summe von 12+16Min., also von mir aus 30Minuten, dann wäre das noch nachvollziehbar aber so?
    Andreas

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.309
    Zitat Zitat von Lucky662 Beitrag anzeigen
    Danke BenderD,
    dass ist das was ich verstehen will.
    Warum läuft der Insert über ein select mit Umsetzung des Datums und der Uhrzeit über die Funktion in 16 Minuten durch und der Insert über den Trigger ohne Umsetzung des Datums mit Uhrzeit (also die Funktion wird definitiv nicht aufgerufen) verlängert die Laufzeit des RPG-Programms von 12 Min auf ein Vielfaches.Das Verstehe ich nicht. Wenn wir hier über doppelte Laufzeiten reden würden oder auch die Summe von 12+16Min., also von mir aus 30Minuten, dann wäre das noch nachvollziehbar aber so?
    Andreas
    ... der Trigger läuft satzweise, der insert select ist eine Bulk Operation, ersteres ohne write cache, zweites mit write cache.
    Bulk Operationen sind schnell, aber fatal, wenn das abkackt.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Mar 2019
    Beiträge
    36

    FRCRATIO = *NONE

    Also wenn ich die Beschreibung richtig interpretiere bedeutet *NONE: Das System verwaltet den Zeitpunkt des Schreibens.

  5. #5
    Registriert seit
    Mar 2019
    Beiträge
    36

    Vielen Dank erstmal...

    ... für die schnellen Antworten.

    - Also ich Ändere erstmal den SYSVAL QQRYDEGREE,
    - dann wandel ich die Datei in eine SQL definierte Tabelle (1:1) - caching!?
    - Als nächstes kommt ON EACH STATEMENT anstelle von EACH ROW.

    Gibt es noch andere Vorschläge?

    Kurz zum Produktivsystem:


    • System: 8286-42A
    • 1 x LPAR auf dem System, Kein VIOS
    • Prozessor: EPXF, 7 Core freigeschaltet
    • Hauptspeicher: 512 GB
    • HDD: 6200 GB mit internen Flash-Drive - Type 9 x 700 GB - Modell 59C2
    • OS: V7R1 mit TR11

  6. #6
    Registriert seit
    Mar 2019
    Beiträge
    36

    Noch eine Anmerkung zur Funktion getTimestamp

    Diese Funktion ist eine SQL-Funktion und läuft auch (und grade da) bei dem Insert mit select von der fertig berechneten Tabelle. Ich weiß, dass ich dieses Statement am ende des CL's aufrufen kann um mir den Ärger zu ersparen.
    Aber ich möchte ja auch mal History-Tabellen schaffen, die an jeder relevanten Tabelle mit einem Trigger versorgt hängen.
    Wenn ein Insert-Trigger also schon solche Laufzeitverlängerungen verursacht funktioniert das nicht. Deshalb der Aufwand.

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.370
    Achtung: bei ON EACH STATEMENT must du die Daten, die gerade insertet wurden erst wieder lesen, was der Gesamtperformance eher abträglich ist, denn an deinem Insert ändert sich ja nichts.
    Das Lesen "from inserted" kommt da noch dazu.
    Zusätzlich muss die DB die temporäre "Inserted"-Tabelle schreiben. Also gleich doppelter Performanceverlust.

    ON EACH STATEMENT lohnt sich nur, wenn man nicht für jeden Satz eine Operation durchführen muss.

    Kodierst du einen einzelnen Insert, wird der Trigger 1x gerufen. Die Daten stehen in "Inserted" als Kopie und nicht in den Programmvariablen.
    Kodierst du einen "insert into .... select from..." wird der Trigger wieder 1x aufgerufen.
    Auch hier stehen alle Daten noch mal in "Inserted" zur Verfügung.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. SQLRPGLE und Fehlerbehandlung zur Laufzeit
    By linguin in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 10-08-17, 12:51
  2. Eine Marke, eine Halle, eine Messe: IT & Business - Ende September in Stuttgart
    By Isabella Pridat-Zapp in forum Archiv NEWSboard Events
    Antworten: 0
    Letzter Beitrag: 10-09-15, 12:50
  3. SQL-Trigger an PF
    By Sebastian85 in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 11-03-15, 07:26
  4. Laufzeit-Probleme nach Release-Wechsel
    By B.Hauser in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 08-02-02, 17:18
  5. Trigger / ILE RPG
    By Frank Pusch in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 17-05-01, 09:34

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •