[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Oct 2004
    Beiträge
    251
    Zitat Zitat von Fuerchau
    ...
    Seit V5R3 macht die AS/400 folgendes:
    - Syntax-Check
    - entfernen der Werte ersetzen mit "?"
    - prüfen im SQLPKG, ob's das Statement schon mal gab
    - a) Wiederverwendung
    - b) Prepare
    - Einfügen der Werte zum "?"
    - Execute
    ...
    Hallo Fuerchau, sehr gute Erklärung. Da ich noch kein V5R3 habe, ein Frage:

    Meiner Meinung nach, kann man diese Funktionalität auch schon bei V5R2 zuschalten.

    bei ODBC: Extended Dynamic Support im ODBC-Treiber
    bei JDBC: "extended dynamic=true" im Connectionstring

    Gehe ich hier recht in der Annahme, oder gibt es unter V5R3 was ganz Neues?

    Robert P.

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

    das wurde schon länger probiert, prepared Statements abzuleiten und zu cachen, was da neu gekommen ist, ist ein System weiter Cache, allerdings sind all diese Caches (auch der vom extended package suppport) zweischneidig. Bei schlechter Trefferquote, oder schwacher Implementierung, kostet die Sucherei mehr als alles andere. Bei JDBC gab es Treiberstände (?!) bei denen das katastrophal war; da hat das löschen eines packages manchmal Verbesserungen um mehr als den Faktor 10 gebracht.
    Mit der ach so famosen neuen Query Engine braut sich wieder was zusammen, die macht keine temporären Indexe mehr (wird mit jedem V5R3 PTF sichtbarer), sondern macht dann halt full Table scans, mit steil ansteigendem Ressourcen Verbrauch.

    mfg

    Dieter Bender

    @Baldur: zu den Inserts habe ich Einwände, die verwenden keinen ODP.

    Zitat Zitat von RobertPic
    Hallo Fuerchau, sehr gute Erklärung. Da ich noch kein V5R3 habe, ein Frage:

    Meiner Meinung nach, kann man diese Funktionalität auch schon bei V5R2 zuschalten.

    bei ODBC: Extended Dynamic Support im ODBC-Treiber
    bei JDBC: "extended dynamic=true" im Connectionstring

    Gehe ich hier recht in der Annahme, oder gibt es unter V5R3 was ganz Neues?

    Robert P.
    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.716
    @Dieter
    Da muss ich zumindest bei der Verwendung per ODBC wiedersprechen.
    Die Datei, in die ich per Insert schreibe ist mit Status "O" eröffnet.
    Also auch hier ist die Verwendung von Prepared-Statements aus Performancegründen durchaus sinnvoll.

    Da ich nicht weiß, in wie weit der Java-Treiber benannte SQLPKG's unterstützt kann es da durchaus Unterschiede geben.

    Um dem Problem der SQLPKG's aus dem Weg zu gehen, kann man mindestens beim ODBC-Treiber sein Paket in die QTEMP legen. Mit dem IBMDA400 gehts ab V5R3 auch.
    Meine Erfahrungen mit dieser Methode sind durchaus sehr gut.

    Was den Optimizer angeht teile ich deine Meinung.
    Häufig genug wird ein Zugriffsweg vorgeschlagen der anschließend keine Verwendung findet, da der Optimizer den Tablescan immer noch für optimaler hält.
    Das ist aber doch eher selten der Fall.

    Da ich inzwischen doch einiges mit ODBC getestet habe, konnte ich mittels DEBUG-Modus die meisten SQL's wie gewünscht beschleunigen.

    Ach ja, es gibt da noch einen kleinen Engpass:

    Mangels Journalisierung werden Anwendungsdateien häufig mit FRCRATIO(1) angelegt.
    Dadurch kann es zu erheblichen Einbußen beim Schreiben kommen.
    Ein simpler CPYF kann z.B. um mehr als einen Faktor 1000 beschleunigt werden, wenn FRCRATIO(*NONE) gewählt wird.

    Wenn Journalisierung gewählt wurde, sollte auf jeden Fall FRCRATIO abgeschaltet werden.

    Dadurch kann es natürlich zu erheblichen Unterschieden zwischen DB/400 und MySQL/SQL-Server/Oracle kommen, da diese Datenbanken eben grundsätzlich journalisieren und somit ein direktes physisches schreiben nicht durchgeführt wird.

    Manche DB's (z.B. Firebird) erlauben das abschalten des Write-Caches, was gleichbedeutend mit einem geradezu gewaltigem Performanceverlust ist.
    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.376
    @Baldur

    die sind zwar mit O geöffnet, verwenden aber (so stehts zumindest in den Debug Messages) keinen Zugriffspfad (sondern Eingangsfolge). Wegen des lazy close von SQL bleibt die Datei mit und ohne prepare offen.
    Package Namen kann man auch beim JDBC Treiber setzen, QTEMP habe ich noch nicht probiert.
    Caching ist auch in der Applikation (gerade bei Zugriffen über Netzwerk) das A und O für gute Performance; das sieht man in Java bei Hibernate, der das automatisch macht.

    mfg

    Dieter

    Zitat Zitat von Fuerchau
    @Dieter
    Da muss ich zumindest bei der Verwendung per ODBC wiedersprechen.
    Die Datei, in die ich per Insert schreibe ist mit Status "O" eröffnet.
    Also auch hier ist die Verwendung von Prepared-Statements aus Performancegründen durchaus sinnvoll.

    Da ich nicht weiß, in wie weit der Java-Treiber benannte SQLPKG's unterstützt kann es da durchaus Unterschiede geben.

    Um dem Problem der SQLPKG's aus dem Weg zu gehen, kann man mindestens beim ODBC-Treiber sein Paket in die QTEMP legen. Mit dem IBMDA400 gehts ab V5R3 auch.
    Meine Erfahrungen mit dieser Methode sind durchaus sehr gut.

    Was den Optimizer angeht teile ich deine Meinung.
    Häufig genug wird ein Zugriffsweg vorgeschlagen der anschließend keine Verwendung findet, da der Optimizer den Tablescan immer noch für optimaler hält.
    Das ist aber doch eher selten der Fall.

    Da ich inzwischen doch einiges mit ODBC getestet habe, konnte ich mittels DEBUG-Modus die meisten SQL's wie gewünscht beschleunigen.

    Ach ja, es gibt da noch einen kleinen Engpass:

    Mangels Journalisierung werden Anwendungsdateien häufig mit FRCRATIO(1) angelegt.
    Dadurch kann es zu erheblichen Einbußen beim Schreiben kommen.
    Ein simpler CPYF kann z.B. um mehr als einen Faktor 1000

    beschleunigt werden, wenn FRCRATIO(*NONE) gewählt wird.

    Wenn Journalisierung gewählt wurde, sollte auf jeden Fall FRCRATIO abgeschaltet werden.

    Dadurch kann es natürlich zu erheblichen Unterschieden zwischen DB/400 und MySQL/SQL-Server/Oracle kommen, da diese Datenbanken eben grundsätzlich journalisieren und somit ein direktes physisches schreiben nicht durchgeführt wird.

    Manche DB's (z.B. Firebird) erlauben das abschalten des Write-Caches, was gleichbedeutend mit einem geradezu gewaltigem Performanceverlust ist.
    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
    Feb 2001
    Beiträge
    20.716
    Ja ok, dann war das ein Missverständnis.
    ODP (OpenDataPath) verstehe ich vom Begriff einfach als geöffnete Datei.
    Dass beim Insert kein Zugriffsweg notwendig ist ist schon klar.

    Das mit der QTEMP habe ich bereits häufig ausprobiert, da ich da vorallem keine Namenskonflikte habe. In der QGPL sieht man ja häufig so Namen die mit MS anfangen und FBA (Access, MS-Query, VBA) aufhören.
    Berechtigungsprobleme sind noch das geringste.

    Und auf die gespeicherte Zugriffsanalyse kann man bei richtiger vorherigen SQL-Analyse sowieso verzichten.
    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. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  3. SQL und OBJLCK
    By malzusrex in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 19-09-06, 11:04
  4. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43

Berechtigungen

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