[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    2.044

    View vs LF / Performance

    Hi *all
    ich habe ein, für mich seltsames Verhalten bei einer Kunden AS400 entdeckt.
    Wir lesen mit Leseprogrammen. Diese werden von einem Generator erzeugt und sind daher immer richtig. Es gibt Leseprogramme die ein LF lesen (Setll read ...) und eines, das via SQL in einer vom Kunden wählbaren Sortfolge liest. Ganz neu gibt es eins, das jede beliebige Datei und damit auch View's (vom Kunden erstellt) liest.
    Nun ist aufgefallen, das das lesen einer VIEW mit dem 'ich kann alles' Programm um Faktor 20 schneller geht als das lesen mit dem SQL Leseprogramm. Die Sortfolge ist in beiden Fällen gleich, der Feldvorrat der View ist 1:1 der des PF, die LF's haben den Satzformatnamen wie das PF (und somit auch alle Felder).
    Da das 'ich kann alles' Pgm erheblich mehr 'drumherrum' macht, als die Pgmme, die Speziell für die Datei ausgelegt sind, versteh ich nix.
    Es ist eine 520 mit 1000/60 CPW mit V5R3


    Klar, die Verarbeitung von SQL-Beschriebenen Dateien ist schneller als DDS aber so heftig ??

    gibt's ne Erklährung oder ein PTF ?
    Die Datenbank ist (auch sonst im 'normalen' Betrieb grotten lahm (DDS Dateien, wenig SQL)

    Danke
    Robi

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Also, für SQL macht es keinen Unterschied, ob die Datei DDS oder SQL-basiert ist.
    Was die Performance angeht, so kann man einiges aus dem Joblog entnehmen, wenn man das Programm mittels STRDBG startet.
    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

  3. #3
    Registriert seit
    Jun 2001
    Beiträge
    2.044

    Also, für SQL macht es keinen Unterschied, ob die Datei DDS oder SQL-basiert ist.

    Das dachte ich auch, (scheintbar) ist es nicht so!



    Beide SQL-Lesevorgänge verwenden Lt. STRDBG den selben Index. Das Verhalten ist jederzeit nachvollziebar
    (auf der Kunden AS400, bei uns nicht(aber unsere is auch ein bisserl schneller))


    Das 'ich kann alles' Leseprogramm hatte das 'nur-eine-Datei' Leseprogram als Mutter, das zusammenbauen der Satzauswahl , das lesen usw. ist identisch

    noch ne idee ?
    Robi

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das ist ja genau das Problem.
    Auf Kundenmaschinen sind die Datenbestände oft sehr viel größer, so dass eine Analyse nur auf dem Kundensystem möglich ist (auch mit STRDBG).

    Es gibt ggf. einen winzigen Unterschied zwischen DDS und SQL und der betrifft REUSEDLT, der bei DDS häufig auf *NO steht, bei SQL immer auf *YES ist.

    Ansonsten bezieht SQL seine Informationen grundsätzlich aus dem Repository (QSYS2/QSYS*-Dateien), daher macht dies für SQL keinen Unterschied.

    Sicherlich gibt es noch den Unterschied der CPW's.
    Erfolgt der SQL im Dialog, bin ich bei 60CPW beschränkt.

    Verwende ich für dynamisches SQL CLI (also die C-SQL-Funktionen), kann ich den SQL in einen Batch-Serverjob verlegen, so dass dafür die Batch-CPW genutzt werden kann.
    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

  5. #5
    Registriert seit
    Jun 2001
    Beiträge
    2.044

    Reuse in VIEW's ?

    jetzt liegst Du falsch.
    Reuse in einer VIEW ?
    Nochmal :
    -Ein PF (mit reuse)
    -Eine VIEW mit allen Feldern des PF, ohne Satzauswahl
    -Embeddet SQL auf die PF, verwendet Index 29 (strdbg)benötigt 15 sekunden
    -Embeddet SQL auf die VIEW, voll dynamisch, alles zur Laufzeit ermittelt, verwendet Index 29 (strdbg) benötigt 1 Sekunde.
    Hätt ich's nicht gesehen, würd ich es nicht glauben!

    Werde mit einem entsprechend großen Datenbestand versuchen das bei uns nachzubilden.
    Robi

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wie sieht denn der embedded SQL und der generierte SQL aus ?
    Vielleicht wird ja im embedded SQL selber noch eine Satzauswahl getroffen, die im generierten SQL mittels where bereits durchgeführt wird ?
    Somit könnte der Unterschied in den Anzahl Operationen liegen, die benötigt werden.

    Schau mal mittels DSPJOB->14 bei den geöffneten Dateien auf die Anzahl IO's !

    PS:
    Der REUSEDLT betrifft natürlich die PF, aber ich kann eben eine PF per DDS oder SQL erstellen, und dann kommt es bei der Verwendung dieses Parameters eben zu diesem Unterschied.
    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

  7. #7
    Registriert seit
    Jun 2001
    Beiträge
    2.044

    alles gleich

    Die IO's werd ich nochmal prüfen (montag)
    Die SQL-Statements sind ohne group, ohne having mit völlig identischem 'where feld = ... and(feld = ...or feld = ...)
    (sehr lang aber ziemlich trivial und absolut gleich, da sie vom selben Programm zur Laufzeit zusammengebaut werden

    mal sehn was der test bei uns bringt
    es ist mir unbegreiflich !!

    Robi

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.928

    SQL auf logische Dateien

    Hallo Robi,

    nur nochmal um sicher zu gehen:
    Die dynamischen SQLs verwenden entweder direkt die physische Datei oder die SQL view?
    Sie verwenden jedoch nicht die logischen Dateien oder?

    Wenn logische Dateien verwendet würden, gäbe es eine Erklärung:
    Der Query Dispatcher, der entscheidet, ob ein SQL-Statement mit der CQE (classical query engine) oder der SQE (SQL query engine) ausgeführt wird, reroutet ein SQL-Statement gnadenlos an die CQE, wenn eine logische Datei angesprochen wird. Dieses Rerouting bewirkt z.T. gewaltige Performance-Einbußen. (Allerdings nicht in dem Maße, wie Du es beschreibst!)

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    @Birgitta
    Das würde aber obige Situation nicht erklären.
    Da die voll dynamischen SQL's auf die VIEW gehen, würden diese also an die CQE gehen und damit langsamer laufen, sie sind aber eindeutig schneller !!!
    Der embedded SQL geht an die PF, würde also die SQE gehen, läuft aber langsamer.

    Wie erklärt sich das mit deiner Theorie ?

    Wenn man den voll dynmaischen SQL also an die PF bindet, läuft dieser dann genauso langsam wie der embedded SQL ?
    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

  10. #10
    Registriert seit
    Jun 2001
    Beiträge
    2.044

    SQL liest PF

    @Brigitta

    Das eine Pgm liest mit embedded SQL das PF (langsam)
    Dieses Pgm wurde bei der Erstellung der Datei generiert und kennt die Datei und die Felder.

    Das andere Pgm liest die VIEW, weis nix, und muß daher alles aus Dateien lesen, zusammenbauen und dann das SQL-Statement bilden.


    Was noch aufgefallen ist:
    Der Job, den ich in diesem Zusammenhang in einem anderen Post genannt habe schreibt permannent die hier betroffene PF

    Kann es sein, daß die PF Behandlung genauer sein will als die VIEW Behandlung und dadurch langsamer wird?
    Der Job schreibt Daten, die in der Sortfolge meines Subfile's sich 'dazwischen' mischen
    Bsp.: der Unique key ist LFNR und wird permanennt hochgezählt, die Anzeige erfolgt nach auftrag, position, LFNR

    @Fuerchau
    PS: Bei der Erstellung des 'ich-kann-alles' Pgm's war Du hier im Forum helfend beteiligt. http://www.rlpforen.de/showthread.php?t=6996
    Und das Ding ist super geworden !!!


    Der Performancetest bei uns ist in Arbeit,
    werde das Ergebnis posten, allerdings ohne das ein job permanennt daten 'dazwischen' schiebt


    Robi

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    2.928

    Cool

    Zitat Zitat von Fuerchau
    @Birgitta
    Da die voll dynamischen SQL's auf die VIEW gehen, würden diese also an die CQE gehen und damit langsamer laufen, sie sind aber eindeutig schneller !!!
    Der embedded SQL geht an die PF, würde also die SQE gehen, läuft aber langsamer.
    Nur zur Richtigstellung:
    1. Eine View hat zwar das Datei-Attribut LF wird vom Query Optimizer bzw. Query Dispatcher anders behandelt als eine DDS beschriebene logische Datei.
    Die Verwendung einer View in einem SQL-Statement bewirkt kein Rerouting an die CQE. Wird eine logische Datei in einem SQL-Statement verwendet, erfolgt die Ausführung durch die CQE. Aus der logischen Datei werden nur die Feld-Auswahl, die Select/Omit-Anweisungen und Join-Informationen Datei entnommen und das SQL-Statement entsprechend umgeschrieben. Im zweiten Schritt werden dann die benötigten Zugriffs-Wege ermittelt. Wenn die gleiche logische Datei, die auch im SQL Statement als Zugriffs-Weg verwendet wird, ist das nur ein Zufall.
    2. Ob die SQE für physische Dateien zum Zug kommt, hängt u.a. davon ab, ob auf der physischen Datei logische Dateien mit SELECT/OMIT-Anweisungen liegen. In diesem Fall wird das SQL-Statement von der CQE ausgeführt.
    3. Weiterhin gibt es sehr wohl Unterschiede, ob eine Datei mit SQL oder DDS definiert wurde. (außer REUSEDLT*YES). So erfolgt bei SQL beschriebenen Tabellen die Gültigkeits-Prüfung erst beim Schreiben (unabhängig, ob mit SQL oder native I/O), während bei DDS beschriebenen Dateien die Validierung beim Lesen erfolgt.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. Datenart in LF ändern
    By Mr.iSeries in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 25-01-07, 08:46
  2. CREATE VIEW
    By Franz Karl in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 20-01-07, 08:04
  3. Datenbankmodellierung: Rational vs. AllFusion?
    By Stoeberl in forum NEWSboard Server Software
    Antworten: 1
    Letzter Beitrag: 29-06-06, 14:56
  4. SQL -> CREATE VIEW
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 17
    Letzter Beitrag: 11-05-06, 14:57
  5. drop view für LF
    By Robi in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 06-04-05, 16:59

Berechtigungen

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