-
embedded SQL Performance Problem mit SCROLL
Hallo *All,
ich habe folgendes Problem:
In einem SQLRPGLE Program soll eine volldynamische Subfile gefüllt werden (nur 15 Sätze je Seite einlesen). Volldynamisch, weil in diesem Programm mit zwei Subfiles gearbeitet wird. Mit F11 kann dann innerhalb der Subfiles hin und her geschaltet werden.
Für das Rückwärtsblättern wollte ich fetch relative verwenden. Hierfür benötigt man in der declare Anweisung das Schlüsselwort SCROLL.
Mein Problem ist nunmehr. Die Performance geht dermaßen in den Keller, sobald in der prepare Anweisung mit SCROLL gearbeitet wird.
Das gleiche Programm ohne SCROLL ist rasant schnell (implementiert noch ohne Rückwärtsblättern)
Im Debug Modus habe ich gesehen, dass in beiden Varianten die gleichen Indizes gefunden werden. Es ist alles gleich. Nur mit Scroll 2 Sekunden, ohne Scroll 4 Minuten. Diese Performanceunterschiede finden schon beim Open statt.
SQL wird dynamisch zusammengebaut.
Anbei die statements:
SELECT OHODDD, OHODMM, OHODYY, OHODCC, OHSODN, ODPLIN, ODSLIN
FROM OHTRNP, ODTRNP
WHERE OHSODN = ODSODN AND
(ODODPT = '21451-19A00-000' OR ODALPT = '21451-19A00-000')
ORDER BY OHODCC DESC, OHODYY DESC, OHODMM DESC,
OHODDD DESC, OHSODN DESC
c/EXEC SQL
c+ PREPARE S2 FROM :W@SQLSTRING
c/END-EXEC
**
c/EXEC SQL
c+ DECLARE C2 SCROLL CURSOR FOR S2
c/END-EXEC
**
c/EXEC SQL
c+ OPEN C2
c/END-EXEC
**
** Vorwärtsblättern
c if W@Direct = 'ROLLUP'
c/exec sql
c+ FETCH NEXT FROM C2 FOR 15 ROWS INTO : W@SqlData
c/end-exec
c else
** Rückwärtsblättern
c/exec sql
c+ FETCH RELATIVE :n FROM C2 FOR 15 ROWS INTO : W@SqlData
c/end-exec
c endif
Ich hoffe, Ihr könnt mir weiterhelfen.
Im voaus besten Dank.
mfg
Klaus
-
Hallo Klaus,
Zitat von itec01
Für das Rückwärtsblättern wollte ich fetch relative verwenden. Hierfür benötigt man in der declare Anweisung das Schlüsselwort SCROLL.
Warum neu lesen für das rückwärts blättern? das schnellste ist hier immer resident halten (dynamische Datenstruktur oder meine Open Source Hashtable)
Zitat von itec01
Im Debug Modus habe ich gesehen, dass in beiden Varianten die gleichen Indizes gefunden werden. Es ist alles gleich. Nur mit Scroll 2 Sekunden, ohne Scroll 4 Minuten. Diese Performanceunterschiede finden schon beim Open statt.
Wenn das sicher ist, dann lässt sich das mit prepared Statements oder statischem SQL heilen (für jede Sortierung eigener Cursor, where Kriterien preparen und Auswahllogik)
Wobei das Ganze für mich nicht ganz klar ist, so auf den ersten Blick dürfte der Cursor read only sein und blocken nicht verboten; könnte auch ein Bug in der Database sein, was sagt denn euer Group PTF Stand?
mfg
Dieter Bender
-
Zitat von BenderD
Hallo Klaus,
Warum neu lesen für das rückwärts blättern? das schnellste ist hier immer resident halten (dynamische Datenstruktur oder meine Open Source Hashtable)
Wenn das sicher ist, dann lässt sich das mit prepared Statements oder statischem SQL heilen (für jede Sortierung eigener Cursor, where Kriterien preparen und Auswahllogik)
Wobei das Ganze für mich nicht ganz klar ist, so auf den ersten Blick dürfte der Cursor read only sein und blocken nicht verboten; könnte auch ein Bug in der Database sein, was sagt denn euer Group PTF Stand?
mfg
Dieter Bender
Hallo Dieter,
danke für die Info. Aktueller PTF Stand = TL04077.
Was verstehts Du unter Daten resisdent halten?
Ich habe mal für Testzwecke das Programm auf statisches SQL umgestellt. Genau das gleiche Ergebnis. Mit Scroll dauert 4 Minuten. Eins habe ich noch gefunden. In einem anderen SQLRPG, jedoch mit nur einer Datei im SELECT, funktioniert das gleiche wunderbar. Seltsam.
Gruss
-
Hallo Klaus,
PTF Stand: TL04077 sagt nix über Group PTF Database aus!!! je nach Release gibt es eine DTAARA, die den Stand enthält oder unter V5R3 den OS400 Command WRKPTFGRP (V5R2 SF99502 ; V5R1 SF99501 ; V4R5 SF99105 ?) Wenn Du für Dein Release (vor V5R3) keine DTAARA findest, dann besorge Dir erst mal das Group PTF und installiere es - dann ist die Datenbank eh' kaputt.
Daten resident halten := im Programm merken was man schon gelesen hat.
Dann solltest Du mal beide Versionen (statisch/dynamisch unter Debug ausführen, dann bekommst Du detaillierte Nachrichten des Query Optimizers, die Dir genau mitteilen was die Datenbank aus Deinen Statements macht; bei diesen Nachrichten sind auch die second level Infos (F1) wichtig! 4 Minuten riecht nach Full Table scan, Index Aufbau oder Bug.
mfg
Dieter Bender
Zitat von itec01
Hallo Dieter,
danke für die Info. Aktueller PTF Stand = TL04077.
Was verstehts Du unter Daten resisdent halten?
Ich habe mal für Testzwecke das Programm auf statisches SQL umgestellt. Genau das gleiche Ergebnis. Mit Scroll dauert 4 Minuten. Eins habe ich noch gefunden. In einem anderen SQLRPG, jedoch mit nur einer Datei im SELECT, funktioniert das gleiche wunderbar. Seltsam.
Gruss
-
Zitat von BenderD
Hallo Klaus,
PTF Stand: TL04077 sagt nix über Group PTF Database aus!!! je nach Release gibt es eine DTAARA, die den Stand enthält oder unter V5R3 den OS400 Command WRKPTFGRP (V5R2 SF99502 ; V5R1 SF99501 ; V4R5 SF99105 ?) Wenn Du für Dein Release (vor V5R3) keine DTAARA findest, dann besorge Dir erst mal das Group PTF und installiere es - dann ist die Datenbank eh' kaputt.
Daten resident halten := im Programm merken was man schon gelesen hat.
Dann solltest Du mal beide Versionen (statisch/dynamisch unter Debug ausführen, dann bekommst Du detaillierte Nachrichten des Query Optimizers, die Dir genau mitteilen was die Datenbank aus Deinen Statements macht; bei diesen Nachrichten sind auch die second level Infos (F1) wichtig! 4 Minuten riecht nach Full Table scan, Index Aufbau oder Bug.
mfg
Dieter Bender
Hallo Dieter,
Sorry, Group PTF = SF99519.
Eins ist mir noch aufgefallen, dass die Datei QAQQINI in der Bibliothek nicht gefunden wird. Könnte dies etwas mit zu tun haben?
Gruss
Klaus
-
Hallo Klaus,
SF99519??? welches Release habt ihr denn?
QAQQINI, das ist normal.
mfg
Dieter
Zitat von itec01
Hallo Dieter,
Sorry, Group PTF = SF99519.
Eins ist mir noch aufgefallen, dass die Datei QAQQINI in der Bibliothek nicht gefunden wird. Könnte dies etwas mit zu tun haben?
Gruss
Klaus
-
Zitat von BenderD
Hallo Klaus,
SF99519??? welches Release habt ihr denn?
QAQQINI, das ist normal.
mfg
Dieter
Hallo Dieter,
V5R2M0
Gruss
Klaus
-
Hallo Klaus,
dann muss es eine DTAARA SF99502 geben und in der steht dann der Gruppenptf Stand drin.
Dieter
Zitat von itec01
Hallo Dieter,
V5R2M0
Gruss
Klaus
-
Zitat von BenderD
Hallo Klaus,
dann muss es eine DTAARA SF99502 geben und in der steht dann der Gruppenptf Stand drin.
Dieter
Hallo Dieter,
DTAARA habe ich nicht gefunden. Hier der Auszug aus dem Befehl WRKGRPPTF:
SF99519 105 Installiert
SF99502 14 Installiert
Ich habe mich aber jetzt entschieden Deinen ersten Weg zu gehen. Rückwärts lesen steuere ich nun über arrays und scroll lasse ich weg. Trotzdem vielen Dank für Deine prompte Unterstützung.
Gruss
Klaus
-
Hallo,
SF99502 sieht eigentlich OK aus, aber die zeitliche Strafe für den Scrool Cursor ist eindeutig zu hoch - Ferndiagnose allerdings recht kompliziret.
mfg
Dieter Bender
Zitat von itec01
Hallo Dieter,
DTAARA habe ich nicht gefunden. Hier der Auszug aus dem Befehl WRKGRPPTF:
SF99519 105 Installiert
SF99502 14 Installiert
Ich habe mich aber jetzt entschieden Deinen ersten Weg zu gehen. Rückwärts lesen steuere ich nun über arrays und scroll lasse ich weg. Trotzdem vielen Dank für Deine prompte Unterstützung.
Gruss
Klaus
Similar Threads
-
By Squall in forum NEWSboard Programmierung
Antworten: 23
Letzter Beitrag: 18-10-06, 12:01
-
By Jamikl in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 30-06-06, 09:48
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 18-06-06, 12:14
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
-
By e_sichert in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 03-05-06, 10:47
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks