PDA

View Full Version : Leeren großer Dateien



MKnoll
02-02-05, 15:16
Hallo liebes Forum,

ich habe mal wieder eine Frage....

Im Zuge unses Jahresabschlusses müssen mehrere Dateien um die "Altlasten" bereinigt werden. Die Größe der Files liegt jeweils so zwischen 10 und 20 Millionen Datensätzen.
Die physischen Dateien sind ungeschlüsselt, darüber liegt jeweils eine logische Datei, die das Kriteriums-Feld im Schlüssel beeinhaltet (allerdings nicht als primary key).

Bsp.
PF: FeldA, FeldB, FeldC, FeldD
LF: K FeldA, K FeldC

Entfernt werden sollen alle Sätze mit z.B. FeldC<2000

Die Frage ist für uns, welcher Weg am schnellsten und wenigsten performanceträchtig ist - mit CPYF über Zwischendateien, SQL, Programme (RPG).

Hat jemand mit solchen grossen Dateien schon Erfahrungen gemacht (Fuerchau oder BenderD vielleicht ?).


Schon mal vorab vielen Dank.

Mirko Knoll

RobertMack
02-02-05, 17:55
Hallo Mirko,

am wenigsten Performance braucht m.E. ein kleines RPG-Programm im Batch - mit einer eigenen LF mit FELDC als Key und einem Select: CMP(EQ 2000).

Falls die Datei journalisiert wird: Sichern, Journal beenden, Batchjob laufen lassen, Journal wieder starten.

Falls die Zeit reicht, wäre auch ein RGZPFM zu empfehlen.

Gruß,
Robert

Fuerchau
02-02-05, 19:10
Naja, bei den großen Mengen ist warscheinlich der CPYF am schnellsten.
Hierbei können mehrere Parameter verwendet werden:

FROMKEY / TOKEY, wenn das Feld im Schlüssel ist

oder

INCREL((*IF FELDC *LT 2000))

Wichtig! In der Datei sollte FRCRATIO(*NONE) eingestellt werden, da sonst der Copy Satz für Satz kopiert und nicht geblockt (ca. Faktor 20-50) werden kann.

Diesen CPYF würde ich halt 2x machen (<2000 und >=2000) um die Daten zu trennen, dann per CLRPFM die alte Datei löschen und die verbliebenen Daten zurückkopieren.

Mit einem kleinen Programm gehts natülich etwas schneller, da 1 mal gelesen und 2 Mal geschrieben werden kann (COBOL ist da sogar ca. 1,5 mal schneller).

Den RGZPFM kannst du dir dann sparen.

Ggf. FRCRATIO wieder einschalten.

Natürlich solltest du Journale /Trigger vorher abschalten und hinterher wieder anschalten bzw. anhängen.

MKnoll
03-02-05, 11:35
Hallo Robert und Baldur,

erst mal vielen Dank für Eure Hilfe.

So in die Richtung des CPYF hatte ich auch bereits gedacht.
Ich wollte nämlich bei der Dateigröße auf jeden Fall um den RGZPFM bei der Ursprungsdatei rumkommen .

Dann mache ich mich mal an die Arbeit ....


Tschüß

Mirko

areichelt
03-02-05, 12:13
Moin Mirko,

wo man sich so überall trifft :D

Viel Spaß mit Deinen Dateien ;)

Gruß
Andree

BenderD
04-02-05, 15:21
Hallo,

it depends...
on your hardware ressources
on your goals
SQL mit parallel Database feature könnte z.B.: durch Parallelisierung am schnellsten sein, bei höherem Ressourcenverbrauch!!!
Die Antwort lässt sich eigentlich nur durch messen (evt. Teile und hochrechnen) geben, alles andere ist im Prinzip mehr oder weniger gut geraten.

mfg

Dieter Bender


Hallo liebes Forum,

ich habe mal wieder eine Frage....

Im Zuge unses Jahresabschlusses müssen mehrere Dateien um die "Altlasten" bereinigt werden. Die Größe der Files liegt jeweils so zwischen 10 und 20 Millionen Datensätzen.
Die physischen Dateien sind ungeschlüsselt, darüber liegt jeweils eine logische Datei, die das Kriteriums-Feld im Schlüssel beeinhaltet (allerdings nicht als primary key).

Bsp.
PF: FeldA, FeldB, FeldC, FeldD
LF: K FeldA, K FeldC

Entfernt werden sollen alle Sätze mit z.B. FeldC<2000

Die Frage ist für uns, welcher Weg am schnellsten und wenigsten performanceträchtig ist - mit CPYF über Zwischendateien, SQL, Programme (RPG).

Hat jemand mit solchen grossen Dateien schon Erfahrungen gemacht (Fuerchau oder BenderD vielleicht ?).


Schon mal vorab vielen Dank.

Mirko Knoll

procher
07-02-05, 07:05
Moin @MKnoll,
ich habe im Zuge von Datenreorganisierungen die Erfahrung gemacht, daß es manchmal sehr sinnvoll ist, alle LF, die man nicht benötigt, vor der Bearbeitung der PF zu löschen. Ich hatte eine PF mit 52 LF drauf und Millionen von Datensätzen. Nach Tests hat sich gezeigt, daß es am schnellsten läuft, wenn die LFs nicht da sind und zum Schluß wieder erstellt werden.

BenderD
07-02-05, 08:50
Hallo,

für diesen Effekt müsste allerdings ein CHGLF MAINT(*RBLD) oder CHGLF MAINT(*DLY) eigentlich ausreichen, anschließend wieder zurück, versteht sich. Wobei die Frage "nicht benötigt" sich ja eigentlich erst später beantwortet.

mfg

Dieter Bender


Moin @MKnoll,
ich habe im Zuge von Datenreorganisierungen die Erfahrung gemacht, daß es manchmal sehr sinnvoll ist, alle LF, die man nicht benötigt, vor der Bearbeitung der PF zu löschen. Ich hatte eine PF mit 52 LF drauf und Millionen von Datensätzen. Nach Tests hat sich gezeigt, daß es am schnellsten läuft, wenn die LFs nicht da sind und zum Schluß wieder erstellt werden.