[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Fuerchau
    Wenn ich z.B. ein DEC-Feld in der Tabelle mit einem INTEGER-Feld im Programm abgleiche, wird ein Zugriffspfad mit fem Typ INTEGER aufgebaut. Da hilft leider keine Analyse.
    Falsch!

    Eine Typen-Konvertierung erfolgt, sofern erforderlich, im Select-Statement, d.h. gegebenenfalls werden Funktionen eingebunden, die Datentypen umsetzen.
    Diese zusätzlichen Aufrufe können dann die Verarbeitung ausbremsen.

    Erst danach wird nach dem/den optimalen Zugiffsweg(en) gesucht.

    Ein Index kann immer nur über bestehende Datei-Felder angelegt werden. Dabei spielt es keine Rolle, ob es sich um einen permanenten oder temporären Index handelt.

    Wird ein temporärer Index angelegt oder ein Table Scan ausgeführt, hat dies u.U. andere Ursachen. Da bleibt oft wirklich nur Versuch und Irrtum.

    @mott
    Eine unterschiedliche Daten-Konstellationen oder Release-Stände zwischen Test- und Echt-Umgebung können den Query Optimizer zu völlig anderen Entscheidungen kommen lassen.

    @Dieter
    Visual Explain ist im Moment das Beste was IBM in dieser Beziehung zu bieten hat.

    Und ... in einer normalisierten Datenbank wird man ausserdem nur eine kleine Anzahl Indices pro Datei benötigen

    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

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    mit der Anzahl der Indices und der Normalisierung bin ich voll bei dir.
    Das mit den Konvertierungen, das ist wohl eine elementare Schwäche des Query Optimizers (Pessimizer?). Ich habe definitiv vor kurzem einen Query von der Art
    SELECT .... from ..... where Feld = xyzCAST(:Feld)
    gesehen, der mit dem Aufruf der Konvertierung einen full tablescan ausgelöst hat, der nach Konvertierung des Feldes im Programm weg war.
    Das mit dem Visual Explain, so hart wollte ich das garnicht formulieren, das die anderen Sachen alle noch schlechter sind.

    mfg

    Dieter


    Zitat Zitat von B.Hauser
    Falsch!

    Eine Typen-Konvertierung erfolgt, sofern erforderlich, im Select-Statement, d.h. gegebenenfalls werden Funktionen eingebunden, die Datentypen umsetzen.
    Diese zusätzlichen Aufrufe können dann die Verarbeitung ausbremsen.

    Erst danach wird nach dem/den optimalen Zugiffsweg(en) gesucht.

    Ein Index kann immer nur über bestehende Datei-Felder angelegt werden. Dabei spielt es keine Rolle, ob es sich um einen permanenten oder temporären Index handelt.

    Wird ein temporärer Index angelegt oder ein Table Scan ausgeführt, hat dies u.U. andere Ursachen. Da bleibt oft wirklich nur Versuch und Irrtum.

    @mott
    Eine unterschiedliche Daten-Konstellationen oder Release-Stände zwischen Test- und Echt-Umgebung können den Query Optimizer zu völlig anderen Entscheidungen kommen lassen.

    @Dieter
    Visual Explain ist im Moment das Beste was IBM in dieser Beziehung zu bieten hat.

    Und ... in einer normalisierten Datenbank wird man ausserdem nur eine kleine Anzahl Indices pro Datei benötigen

    Birgitta
    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
    Feb 2001
    Beiträge
    20.696
    Da kann ich Dieter nur zustimmen.
    Der Tablescan / Indexaufbau erfolgt auf Basis des Feldes der Where-Bestimmung.
    Das gleiche gilt übrigens auch, wenn bei einer Join-Beziehung die Feldtypen nicht zueinander passen. Auch in diesem Fall konvertiert der Optimizer die Datenbank (bzw. Index-Anlage) und nicht intern nur das Feld !!!

    Um also performante Ergebnisse zu erzielen, ist es UNABDINGBAR zumindest die Feldtypen von Join und Where zu Programmvariablen (Parametern) abzugleichen bevor man mit irgendwelchen Tools (Visualirgendwas) an weitere Analysen geht.
    Zumindest hierbei konnte ich mich IMMER auf die Debug-Angaben des Joblog's verlassen.
    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

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Bei den nichtpassenden Join Bedingungen hat die Database Engine ja eigentlich keine Möglichkeit Zugriffspfade zu nutzen, da hilft nur Redundanz (zusätzliches Feld mit passendem Datentyp), aber bei dem angeführten Beispiel ist das ein schlichtes Armutszeugnis und lässt mich bezweifeln ob es eine neu Database Engine gibt, oder es sich um ein Rebranding durch das Marketing handelt (früher nannte man das alter Wein in neuen Schläuchen).
    Das Verhältnis zwischen den Debug Meldungen, dem Database Monitor und dem Visual Explain ist einfach benannt: das basiert alles auf den Daten, die der Database Monitor liefert und wenn es Abweichungen bei verschiedenen Ablaufumgebungen gibt, dann muss man genau auf den Daten von Laufzeitmessungen aufbauen, alles ander ist Quark. Ob man dann lieber liest, oder lieber Bildchen anschaut, das ist pure Geschmacksache; ich bevorzuge lesen und selber analysieren, wenn visual explain schlaue Vorschläge macht, dann frage ich mich warum er die nicht gleich der Query engine macht!!!
    Bei Oracle kann man sowas konfigurieren und selbst MySQL geht diesen Weg!

    Dieter

    Zitat Zitat von Fuerchau
    Da kann ich Dieter nur zustimmen.
    Der Tablescan / Indexaufbau erfolgt auf Basis des Feldes der Where-Bestimmung.
    Das gleiche gilt übrigens auch, wenn bei einer Join-Beziehung die Feldtypen nicht zueinander passen. Auch in diesem Fall konvertiert der Optimizer die Datenbank (bzw. Index-Anlage) und nicht intern nur das Feld !!!

    Um also performante Ergebnisse zu erzielen, ist es UNABDINGBAR zumindest die Feldtypen von Join und Where zu Programmvariablen (Parametern) abzugleichen bevor man mit irgendwelchen Tools (Visualirgendwas) an weitere Analysen geht.
    Zumindest hierbei konnte ich mich IMMER auf die Debug-Angaben des Joblog's verlassen.
    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. SQL Performance
    By mariupol1963 in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 11-08-06, 13:06
  2. problem mit eigener sql function
    By Stefan_Sk in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 26-05-06, 16:37
  3. SQL Problem
    By Lucky4712 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-05-06, 15:57
  4. Problem bei Abfrage bei Imbedded SQL
    By cbe in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 08-06-05, 16:21
  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
  •