[NEWSboard IBMi Forum]

Thema: SQL Update

Hybrid View

  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    2.049
    Gibt es .
    die 'üblichen' Beschleuniger hab ich alle durch.
    Daher die Frage nach was anderem ...
    Danke
    Robi

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    sind das sql-tabellen?
    wenn nein, glaub ich sofort, dass es mit rpg schneller ist, da in dem fall die alte classic quere engine verwendet wird.

    werden von sql auch die indices wirklich verwendet? entweder mittelds debug oder visual explain (im iseries navigator) nachschauen, was sql da wirklich macht bzw. wo da der flaschenhals ist.

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.789
    Ich könnte da noch mein SQLCPY anbieten.
    Dieses bietet auch Update-Funktionen.
    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
    Jun 2001
    Beiträge
    2.049
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    werden von sql auch die indices wirklich verwendet? entweder mittelds debug oder visual explain (im iseries navigator) nachschauen, was sql da wirklich macht bzw. wo da der flaschenhals ist.
    Danke, das läuft bei mir unter den 'üblichen' Beschleunigern
    Das ist alles im grünen Bereich

    Und da das RPG pgm mittlereile auch schon durch ist ...

    Danke sehr
    Robi

  5. #5
    Registriert seit
    Jul 2005
    Beiträge
    1.053
    Werfe mal Cobol in die Runde

    Gruß AS400.lehrling

  6. #6
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    nur der neugier halber, sind das sql-tabellen gewesen?

  7. #7
    Registriert seit
    Jun 2001
    Beiträge
    2.049
    nein, ganz 'normale' DDS PF und LF

  8. #8
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    ok danke, dann ist eh alles klar.
    wenns sql-tabellen wären würde es nämlich auch schneller laufen.

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.789
    Dem kann ich nicht zustimmen.
    Mit PF's und LF's läuft es fast immer genauso schnell wie mit SQL-Tabellen.
    Wichtig sind einzig und allein vorhandene Indexe und ob sie identische Definitionen haben.
    Identisch heißt hier wirklich identisch. Packed und Zoned ist dem RPG nämlich egal, der schiebt dann Umwandlungen ein, SQL aber nicht.

    Manchmal ist es hilfreich, den Key auf der linken Seite per cast anzupassen, also
    decimal(a.Key, n, y) = b.key
    oder
    zoned(a.key, n, y) = b.key

    Das funktioniert auch mit ungleich langen Zeichenfeldern:
    cast(a.key as char(nn)) = b.key

    Und zu guter letzt:
    LF's mit Select/Omit werden komplett ignoriert!
    In früheren Releases führte allein die Existenz einer solchen LF zur Verwendung der CQE.
    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
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Dem kann ich nicht zustimmen.
    Mit PF's und LF's läuft es fast immer genauso schnell wie mit SQL-Tabellen.
    Wichtig sind einzig und allein vorhandene Indexe und ob sie identische Definitionen haben.
    Identisch heißt hier wirklich identisch. Packed und Zoned ist dem RPG nämlich egal, der schiebt dann Umwandlungen ein, SQL aber nicht.
    bin mir jetzt nicht sicher ob wir das gleiche meinten.
    meine aussage bzgl. der geschwindigkeit bezog sich nur auf den zugriff mit sql auf sql-tabellen vs. dds-tabellen.
    dass rpg dds-tabellen oft schneller verarbeiten kann als über sql ist klar.
    wir haben in der firma auch oft probleme, wenn via sql auf dds-tabellen zugegriffen wird. ändere ich diese auf sql-tabellen, läuft es viel schneller.
    denn im ersten fall wird die CQE verwendet und im zweiten die SQE, welche gegenüber der CQE zb auch threads parallel abarbeiten kann.

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    2.943
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    meine aussage bzgl. der geschwindigkeit bezog sich nur auf den zugriff mit sql auf sql-tabellen vs. dds-tabellen..
    Das liegt daran, dass beim Schreiben in SQL Tabellen geprüft wird, ob der angekommene Inhalt gültig ist, während beim Lesen aus SQL-Tabellen keine Gültigkeitsprüfung erfolgt. Bei DDS beschriebenen Dateien erfolgt die Gültigkeitsprüfung erst beim Lesen, während jeder Schrott in die Dateien geschrieben werden kann. Dadurch ist das Lesen aus SQL Tabellen (etwas) schneller als das Lesen aus DDS beschriebenen Dateien, während das Schreiben (etwas) langsamer ist.

    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    dass rpg dds-tabellen oft schneller verarbeiten kann als über sql ist klar...
    RPG kann zumindest bei der ersten Ausführung Dateien (unabhängig ob DDS oder SQL) schneller verarbeiten als SQL, da RPG in RPG ein Zugriffsweg vorgegeben wird (F-Bestimmungen) währen SQL grundsätzlich optimiert auch und vorallem dann wenn eine DDS beschriebene logische Datei angegeben wird.

    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    wir haben in der firma auch oft probleme, wenn via sql auf dds-tabellen zugegriffen wird. ändere ich diese auf sql-tabellen, läuft es viel schneller.
    denn im ersten fall wird die CQE verwendet und im zweiten die SQE, welche gegenüber der CQE zb auch threads parallel abarbeiten kann.
    Es ist ein verbreiteter Irrtum, dass die SQE nur SQL-Tabellen verarbeiten könnte, während alle DDS Dateien von der CQE verarbeitet werden müssen. Die SQE kann DDS beschriebene physische Dateien verarbeiten.

    Wird in einem SQL-Statement eine DDS beschriebene logische Datei angegeben, wird das SQL-Statement von der CQE ausgeführt, da die logische Datei aufgelöst wird (Feld-Auswahl, Select/Omit und Joins) und das SQL-Statement basierend auf der physischen Datei oder SQL Tabelle neu geschrieben wird. Dies Auflösung kann nur von der CQE vorgenommen werden (SQE steht schließlich SQL Query Engine).

    Liegen auf der physischen Datei (oder SQL Tabelle) logische Dateien mit SELECT/OMIT-Anweisungen, wird auch bei Angabe der physischen Datei die Ausführung des SQL-Statements von der CQE übernommen. Der Grund dafür liegt darin, dass alle vorhandenen Zugriffswege also auch diejeningen, die in DDS beschriebenen logischen Dateien mit SELECT/OMIT hinterlegt sind verwendet werden sollen.

    Ändert man in der Abfrage-Options-Datei QAQQINI die Option IGNORE_DERIVED_INDEXES auf *YES (*NO ist Unterlassungswert vor Release 6.1 mit Release 6.1 wurde der Unterlassungswert auf *YES geändert), werden Zugriffswege in DDS-beschriebenen Dateien ignoriert und das SQL-Statement kann von der SQE ausgeführt werden. Im Extremfall kann man sich durch diese Option Zugriffswege unter den Füßen wegziehen, so dass anstatt eines Index Access ein Table Scan oder zumindest eine Table Probe erfolgen muss.

    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

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.390
    Wichtig ist immer die Größenordnungen nicht aus dem Auge zu verlieren:
    - Hauptspeicheroperationen dauern < Mikrosekunden (Millionstel Sekunden), hierzu gehören Prüfungen beim lesen/schreiben
    - Datenbank Operationen dauern Millisekunden (Tausendstel), hierzu gehören reads, updates, open/close
    - Zugriffspfad Berechnungen dauern einige Millisekunden
    - Aufbau von temporären Zugriffspfaden kann Minuten dauern

    Wenn man also Minuten sucht, scheidet da einiges aus, weil es im untersuchten Fall zu selten auftritt, oder zu kurz andauert.

    Im vorliegenden Beispiel sind mit hoher Wahrscheinlichkeit unterschiedliche Zugriffspläne die Hauptursache. RLA macht in jedem Fall positioned Updates (der kann nämlich nix anderes), SQL hat sich, so wie es aussieht, für searched Updates entschieden - und die sind sehr viel langsamer (typischer Wert: Faktor 2).

    (Der Vollständigkeit halber sei noch angemerkt, dass alle angegebenen zeitlichen Werte von der konkreten Hardware abhängen, die Verhältnisse zueinander aber durchgängig gelten)

    D*B
    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 Update aus zwei Dateien mit 3 Schlüsselfeldern
    By mk in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 13-07-12, 09:53
  2. update per sql
    By steven_r in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 25-09-06, 09:22
  3. SQL Update über 2 i5 Systeme
    By daniel.ludwig in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 21-07-06, 13:41
  4. Update Syntax SQL
    By wuwu in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-07-06, 16:31
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 10:43

Berechtigungen

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