[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.867
    Da liegt aber dein Trigger eben im Argen.
    Ohne Beispiel-Code kann man nur Raten:
    "geänderte Sätze in der neuen Tabelle aktualisiert"
    Dann prüfe mal, ob da nicht ein Index für den Update fehlt, was dann zu dieser extremen Laufzeit führt.

    Hinweise kann man sehr schön bei eingeschaltetem DEBUG-Mode sehen.
    Was i.Ü. auch sehr viel Zeit kostet sind typische NULL-Fehler.
    Im SQL können alle Variablen auch NULL sein, was dann beim Update/Insert fehlschlagen kann.
    Im ILERPG gibt es keine Variablen, die wahlweise NULL oder einen Wert haben. Dies wird mit NULL-Anzeigern gelöst (bei RLA via %nullind).
    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
    Wie beschriben ist nur der einfache INSERT-Trigger relevant, ein Update findet hier noch garnicht statt. Das Datum ist 0!
    Trigger:
    create trigger MIVGES000U after insert on MIVGES00 referencing new as nnn for each row mode db2sql
    insert into ANALYSES.total_rental_days_0 values(nnn.MGFIRNUM,
    nnn.MGKUNNUM,
    nnn.MGFILNUM,
    nnn.MGVERNUM,
    nnn.MGKFZNUM,
    nnn.MGKFZART,
    nnn.MGKFZGRU,
    nnn.MGBERGRU,
    nnn.MGUMSGES,
    nnn.MGUMS001,
    nnn.MGUMS002,
    nnn.MGUMS003,
    nnn.MGUMS004,
    nnn.MGUMS005,
    nnn.MGTAGGES,
    nnn.MGBERSTD,
    case when nnn.MGDATICO != 0
    then BUBITOOLS.getTimestamp((DIGITS(nnn.MGDATICO) || DIGITS(nnn.MGTIMICO) || '00'), '*YMD')
    end,
    case when nnn.MGDATICI != 0
    then BUBITOOLS.getTimestamp((DIGITS(nnn.MGDATICI) || DIGITS(nnn.MGTIMICI) || '00'), '*YMD')
    end,
    substr(digits(nnn.MGDATICI), 1, 4),
    nnn.MGKILGEF);

    Ich glaube nicht das beim Insert ein Index hilfreich wäre, da er die Daten gelifert bekommt und nur ein anhängen eines neuen Datensatzes veranlasst.

    Was ich aber gefunden habe ist, dass der Wert QQRYDEGREE auf *NONE steht.
    Der hat wohl was mit der Parallelverarbeitung zu tun.

    Auszug aus der Hilfe zum Systemwert:
    Es gibt zwei Arten von Parallelverarbeitung: Parallele Ein-/Ausgabeverarbeitung und Symmetric Multiprocessing (SMP). Bei der parallelen E/A-Verarbeitung kann der Datenbankmanager für jede Abfrage mehrere Tasks verwenden. Die Verarbeitung der Zentraleinheit (CPU-Verarbeitung) erfolgt weiterhin seriell.

    Vielleicht liegt es ja daran?
    Oder gibt es noch eine Einstellmöglichkeit für die Triggerverarbeitung nach dem Motto fire and forget?

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
  •