[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Oct 2003
    Beiträge
    117

    SQL Performance

    Ich habe folgenden Effekt:

    Ein RPG-Programm liest in einer Schleife eine Physische Datei
    und gibt den Inhalt nach einigen rtrim und diversen Datumsprüfungen mit einem Insert (Embedded) in eine SQL-Tabelle aus.

    Das Problem ist nun die Laufzeit. Es sind 11,7 Mio Datensätze, die geschrieben werden. Die ersten 4-5 Millionen Datensätze gehen schnell, hochgerechnete Gesamtlaufzeit ca. 2 Stunden. Dann wird das Schreiben der Datensätze kontinuierlich langsamer, bei 8-9 Mio Datensätzen ist die Geschwindigkeit der Inserts so langsam, dass der Job ganz in die Knie geht. Aus den 2 Stunden werden dann 23(!) Stunden.

    Weiß jemand, wo die Zeit verlorengeht oder wie ich am besten herausfinde, wo das Problem ist? Hatte bisher keine großen SQL-Performance-Probleme und habe mich deshalb noch nicht damit auseinandergesetzt.

    Die SQL-Tabelle ist eine Standalone-Tabelle, keine Views, keine Verknüpfungen über Foreign Keys. Es gibt einen Primary Key über eine Idenditätsspalte und einen nicht eindeutigen Index über eine weitere Spalte.

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    als erstes würde ich hier immer STRDBMON (mit allen Details) empfehlen, um abzuklären, ob das wirklich am INSERT liegt (und nicht am lesen von gelöschten Sätzen). Wenn die Problembeschreibung exakt ist, dann müsste man über die Zeit zunehmende Insert Zeiten sehen. Dann würde ich mal PTF Stand Database verifizieren. Stimmt das mit den Indexen und Constraints wirklich??? der Effekt an sich riecht nach Index Einflüssen.

    D*B

    Zitat Zitat von Allrounder Beitrag anzeigen
    Ich habe folgenden Effekt:

    Ein RPG-Programm liest in einer Schleife eine Physische Datei
    und gibt den Inhalt nach einigen rtrim und diversen Datumsprüfungen mit einem Insert (Embedded) in eine SQL-Tabelle aus.

    Das Problem ist nun die Laufzeit. Es sind 11,7 Mio Datensätze, die geschrieben werden. Die ersten 4-5 Millionen Datensätze gehen schnell, hochgerechnete Gesamtlaufzeit ca. 2 Stunden. Dann wird das Schreiben der Datensätze kontinuierlich langsamer, bei 8-9 Mio Datensätzen ist die Geschwindigkeit der Inserts so langsam, dass der Job ganz in die Knie geht. Aus den 2 Stunden werden dann 23(!) Stunden.

    Weiß jemand, wo die Zeit verlorengeht oder wie ich am besten herausfinde, wo das Problem ist? Hatte bisher keine großen SQL-Performance-Probleme und habe mich deshalb noch nicht damit auseinandergesetzt.

    Die SQL-Tabelle ist eine Standalone-Tabelle, keine Views, keine Verknüpfungen über Foreign Keys. Es gibt einen Primary Key über eine Idenditätsspalte und einen nicht eindeutigen Index über eine weitere Spalte.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Aug 2006
    Beiträge
    2.077
    Die Frage die sich stellt, ist ob Du evtl. die Sätze sortiert einliest und auch genaus so sortiert wegschreibst.
    Es gibt nix schlimmeres für einen Index als wenn er sofort sortiert ist. (Zumindestens habe ich das mal vor 15 Jahren so gelernt bei B-Tree und Konsorten).


    Gruß
    Gregor

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    das mag vor 15 Jahren mal gestimmt haben...

    Zitat Zitat von KingofKning Beitrag anzeigen
    Die Frage die sich stellt, ist ob Du evtl. die Sätze sortiert einliest und auch genaus so sortiert wegschreibst.
    Es gibt nix schlimmeres für einen Index als wenn er sofort sortiert ist. (Zumindestens habe ich das mal vor 15 Jahren so gelernt bei B-Tree und Konsorten).


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

  5. #5
    Registriert seit
    Oct 2003
    Beiträge
    117
    Erst einmal vielen Dank. Ich werde den STRDBMON aufsetzen. Entspricht das dem SQL Performance Monitor im iSeries Navigator?

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    im OOPs Nerv heißt das Ding in jeder Version anders, dahinter steht dann ein STRDBMON auf der AS/400 (kann man Job bezogen starten - beenden nicht vergessen, immer mit vollen details starten). Auswerten muss man das (leider) mit OOPs Nerv (wenn es denn funktioniert). Das Tool (Database Monitor) ist genial, die Benutzeroberfläche (OOPs Nerv) eine Frechheit!!!

    D*B

    Zitat Zitat von Allrounder Beitrag anzeigen
    Erst einmal vielen Dank. Ich werde den STRDBMON aufsetzen. Entspricht das dem SQL Performance Monitor im iSeries Navigator?
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  2. SQL Performance
    By mariupol1963 in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 11-08-06, 13:06
  3. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  4. Ferne SQL Analyse / Performance
    By pwrdwnsys in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 16-08-05, 08:56
  5. embedded SQL Performance Problem mit SCROLL
    By itec01 in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 16-09-04, 18:38

Berechtigungen

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