-
Hallo Alex,
ob das schnell oder langsam ist, hängt zuerst von der Hardware ab, für das, was Du da machst sieht das garnicht so langsam aus. Bei 5 ms werden da immerhin 200 Operationen pro sec ausgeführt, das wären dann bei 15 sec. ja 3000 Datenbankoperationen???
Generell wird das Ganze bei static SQL zwar schneller, aber Wunder würde ich hier nicht erwarten, es sieht mir nicht so aus, dass der prepare das Problem darstellt, sondern eher die Menge der Operationen.
Zu dem Mechanismus mit dem MAX habe ich Kopfweh (auch bei Baldur), das funktioniert nur fast und ist Quelle von Sperrproblemen im konkurrierenden Zugriff. Ein SELECT MAX(...) sperrt bei entsprechendem Sperrlevel die gesamte Table ohne dass damit überhaupt garantiert wäre, dass die so gefundene Nummer frei ist (wenn jemand über einen anderen Weg, oder mit dirty read schneller ist).
Ein primärer Kandidat ist bei sowas auch immer der (Group) PTF Stand; bei V5R3 wackelt die Datenbank immer noch, selbst bei relativ neuen Ständen.
Generell gilt hier immer: schneller ist es dann, wenn man das messtechnisch nachweisen kann, Patentrezepte gibt es hier (fast) keine.
mfg
Dieter Bender
 Zitat von MrBonZai
Hallo,
ich habe ein Schnittstellen-Programm geschrieben, das komplett dynmische SQL-Statements aufbaut und ausführt.
Eine Performance-Messung hat ergeben, dass eine der Engpässe die Ausführung der SQL-Statements ist.
Pro Update werden ca. 3 millisekunden und bei Insert bis zu 6 ms benötigt werden (4-6 ms)
Da mehrere Insert auf diverse Dateien durchgeführt werden, läppert sich das ganz schön zusammen... und es vergehen z.B. bis zu 15 Sekunden und das obwohl keine übermässige Menge an Daten geschrieben werden...
des SQL selbst wird mittels folgendem Befehl ausgeführt:
c/EXEC SQL
c+ EXECUTE IMMEDIATE :sqlcmd
c/END-EXEC
die SQL-Statements die ich ausführe sehen z.b. so aus:
update NC6000 set BWOT ='490' where FIR =100 and FIL =100 and DKNR =100
insert into NC6130 (FIR,FIL,DKNR,KORR,WPNR,PSZE,PSLFNR) (select 100,100,1051,0,1,'DE001006',CASE WHEN (MAX(PSLFNR)+1 IS NULL) THEN 1 ELSE MAX(PSLFNR)+1 END from NC6130 where FIR =100 and FIL =100 and DKNR =00000000001051 and KORR =0 and WPNR =1)
Pro Aufruf der Schnittstelle wird nur ein Update und alle folgenden Operationen mittels Insert ausgeführt.
Kennt ihr Tipps wie ich die Performance steigern kann?
Gibt es Tricks, die man bei Insert beachten muss bzw. beim Dynamischen SQL?
oder sonstige Einstellungen die man beachten sollte?
gruss Alex
Similar Threads
-
By Rincewind in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 18-12-06, 13:58
-
By Squall in forum NEWSboard Programmierung
Antworten: 23
Letzter Beitrag: 18-10-06, 12:01
-
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
-
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
-
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