-
Sofern Du Daten Felder mit VARLEN ohne Angabe einer Länge (also nicht VARLEN(256) anlegst.
Wird im Datensatz lediglich die Adresse (16 Byte) der Overflow-Area in der die eigentlichen Daten hinterlegt werden gespeichert.
148.992.000 errechnet sich vermutlich aus der tatsächlichen Satz-Länge (für die variablen Felder jeweils 16 Byte) und der Anzahl der Sätze.
Die andere Zahl ermittelt sich vermutlich aus den Daten die tatsächlich gespeichert wurden.
Sofern man bei VARLEN eine Länge (VARLEN(256) angibt, wird diese Länge für jeden Satz in der Datei reserviert und nur Daten, die diese Länge überschreiten werden in der Overflow-Area abgelegt.
Die beste Performance erhält man wenn man die Länge bei VARLEN so wählt, dass ca. 80-90 % aller Daten direkt im Datensatz gespeichert werden können.
Felder mit variabler Länge machen beim Zugriff und Vergleich durchaus Sinn, da in den beiden führenden (nicht sichtbaren) Bytes die tatsächlich belegte Länge gespeichert wird.
Beim Vergleichen werden dann auch nur die Anzahl der Bytes verabeitet/verglichen.
Birgitta
-
Warum die IBM das so kompliziert gemacht hat entzieht sich mir.
Da die max. Satzlänge (Puffer) auch mit Varlen die 32K nicht übersteigen darf lohnt eine getrennte Speicherung nicht.
Aus anderen Threads erfährt man ja, dass das Lesen / Kopieren bei Befüllen der Overflow-Area nur zusätzliche Performance kostet.
Und was das Vergleichen angeht, so ist dies Performancemäßig egal ob man Varlen oder Fixed vergleicht da bei ungleicher Länge von Feldern für den Rest immer Blank angenommen wird.
Außerdem hört ein Vergleich immer beim ersten ungleichen Zeichen auf, so dass nie alles verglichen werden muss.
Da die AS/400-DB die Daten nicht komprimiert (wie so manche andere DB), ist eine Speicherung ohne Varlen immer performanter.
Varlen wird nicht MI-mäßig direkt unterstützt sondern muss durch Runtimefunktionen erledigt werden.
Dies merkt man insbesonders bei COBOL, wo man selber für das Befüllen der Längeninformation zuständig ist. Eine Runtimeunterstützung gibt es da nicht.
Wenn man also Varlen benötigt sollte man immer Varlen(Größe des Feldes) verwenden damit erst keine 2. IO-Operation erforderlich wird.
Bei ODBC/OLEDB-Verbindungen hilft Varlen dann etwas, da weniger übertragen wird (man kann auch Komprimierung einschalten). Zusätzlich gibt's bei OLEDB noch eine Einstellung für automatischen RTRIM für Zeichenfelder.
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