-
Die Performance lässt sich ggf. durch ClientCursor noch steigern.
Empfehlenswert ist auch der Einsatz eines CommandObjekts mit ParameterMarkern, wobei CA die Anzahl und den Typ der Parameter auch noch selber lädt.
with MyCommand
.CommandText="Select ... where Key=?"
set .ActiveConnection=MyConnection
end with
MyCommand(0) = "Key"
with MyRecordset
if .State=adStateClosed then
MyRecordset.Open MyCommand
else
MyRecordset.Requery
endif
end with
Zusätzlich kann man in der ODBC-Konfig auch noch das Flag "Daten vorab laden" setzen, man spart dadurch zusätzliche Netzrequests.
Beim Einsatz von ClientCursor lassen sich auch mehrere Veränderungen in einem Recordset durchführen (Update/Addnew/Delete), die dann mit einem Request "UpdateBatch" nach oben geladen werden.
Durch .Filter=adFilterError (oder ähnlich) lassen sich dann fehlerhafte Updates gezielt behandeln.
-
Hallo zusammen,
die Performance-Unterschiede in LAN und WAN treten nicht nur beim Update, sondern auch im ReadOnly-Modus auf.
Der Einzelsatz-Zugriff ( vergleichbar dem RPG-CHAIN ) ist im WAN-Betrieb extrem langsam.
Hier sinngemäss der Programm-Code:
SQL = 'select * from DATEI where ...'
RecordSet.Open (SQL)
Mir scheint, dass das Öffnen des RecordSets der Flaschenhals ist.
Gibt's dafür eine Erklärung ? Danke
-
Die Frage ist, wieviele Daten denn da so übertragen werden.
Man bedenke, dass der Open je mehrere Netzrequests auslöst.
In der ODBC-Konfig kann man aktivieren(ich glaube Register Server), "SQL Vorablesezugriff", dies reduziert die Requests etwas.
Um genaues zu analysieren, kann man über den ODBC-Manager einen SQL-Trace ziehen, der allerdings extrem verlangsamt.
Hier sieht man dann genau, was da so alles abgeht.
Zusätzlich ist es natürlich immer ein Unterschied, ob man einen SQL zusammenbaut oder mittels Command-Objekt und Parametern arbeitet.
Hier kann man dann auch so verfahren:
dim MyCmd as new ADODB.Command
MyCmd.CommandText = "select * from myfile where key=?"
set MyCmd.ActiveConnection=MyConnection
dim MyRcd as new ADODB.Recordset
MyCmd(0) = "Key"
if MyRcd.State = adStateClosed then
MyRcd.Open MyCmd
else
MyRcd.Requery
endif
Das dauert dann nicht mehr ganz so lange.
Similar Threads
-
By fighter3582 in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 13-12-11, 09:11
-
By ahingerl in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 01-06-11, 10:39
-
By usafft in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 12-09-05, 09:53
-
By Robi in forum IBM i Hauptforum
Antworten: 16
Letzter Beitrag: 06-07-05, 10:47
-
By Robi in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 30-07-04, 12:41
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