3. November 2011 15:27
Hallo zusammen,
ich wollte FA-Komponenten von simulierte und beendete FAs löschen. Der Hintergrund lassen wir erstmal aussen vor.
Anzahl Datensätze von allen FA-Komponenten sind ca. 2,3 Mio.
Welche Idee habt ihr um die Datensätze am schnellsten zu löschen?
Welche Werkzeug soll schneller sein: Codeunit oder Report?
Ich habe im Moment Report verwendet. Das hat unheimlich lange gedauert. (über 5 Stunden)
Welche Code eure Meinung nach ist sinnvoller?
A.
- Code:
Prod. Order Component - OnPreDataItem()
SETFILTER(Status,'%1|%2',Status::Simulated,Status::Finished);
DELETEALL;
Prod. Order Component - OnAfterGetRecord()
Prod. Order Component - OnPostDataItem()
COMMIT;
B.
- Code:
Prod. Order Component - OnPreDataItem()
SETFILTER(Status,'%1|%2',Status::Simulated,Status::Finished);
Prod. Order Component - OnAfterGetRecord()
DELETE;
COMMIT;
Prod. Order Component - OnPostDataItem()
Danke im voraus.
Zuletzt geändert von navsyst am 7. November 2011 01:20, insgesamt 1-mal geändert.
3. November 2011 15:29
DELETEALL, ist das Feld Status im Primärschlüssel integriert? Ansonsten fehlt ein SETCURRENTKEY.
3. November 2011 15:33
Natürlich gehört den Status zu Primärschlüssel.
3. November 2011 15:57
Hallo,
würd eine Codeunit nicht schneller sein? Mit dem Report holst du doch die Datensätze vereinzelt.
Und warum ein Commit?
Gruß
Aydin
3. November 2011 17:16
Warum ein Commit?
COMMIT (Database)
Use this function to end the current write transaction.
Hintergrund ist dass ich mehrere Dataitem in Report habe. Wenn der abbricht, und ich den neu starte, muss der Report nicht noch mal von Beginn anfangen.
Mit Codeunit ist der Vorgang auch nicht unbedingt schneller :(
Siehe Bilderanhang.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
3. November 2011 18:20
Wenn es noch schneller gehen soll, dann ist SQL da natürlich die bessere Wahl.
3. November 2011 18:35
SQL-Datenbank? Ab nächstes Jahr :)
(migriere gerade Datenbank von 3.10 ins RTC)
Abberrr... das war keine Lösung für meine aktuelle Frage! :)
3. November 2011 19:08
Mal eben ins unreine gedacht: (ich bin mir nicht sicher ob das möglich ist
)
Versuch das ganze mal über die FA-Köpfe die diesen Status haben, und lösche dann die Zeilen anhand der FA Satus und FA- Nummer
Gruß, Fiddi
3. November 2011 19:26
Habe ich schon mal probiert.
Der dauert noch länger :)
3. November 2011 19:31
wie groß ist den der Cache, den du deinem DB-Server spendiert hast? unter 'Datei\Datenbank\Informationen' Reiter Datenbank und dort 'DBMS Cache'?
Gruß, Fiddi
3. November 2011 19:32
10000 KB
Gruss
navsyst
3. November 2011 19:35
kein Wunder
. Versuch das mal in eine Größenordung von max. 1GB zu bringen
Gruß, Fiddi
3. November 2011 19:48
AHA!!!!
Kann man die DBMS Cache einfach so auf 1 GB vergrössern??
Wenn das hilft.......... hmm....
3. November 2011 22:09
Kann man die DBMS Cache einfach so auf 1 GB vergrössern??
Wenn der Arbeitsspeicher des Servers das hergibt (sprich >=2GB Arbeitsspeicher hat) , dann schon. Dann muss man nur den Server- Dienst mit den passenden Parametern aufrufen.
Gruß, Fiddi
3. November 2011 22:53
Ja. Der Server hat 2 GB RAM. Was meist du mit Dienst mit passende Parameter aufrufen?
Reicht es nicht den Dienst neu starten lassen?
Muss ich den Dienst neu installieren?
3. November 2011 23:07
Reicht es nicht den Dienst neu starten lassen?
Muss ich den Dienst neu installieren?
Nein und Ja
Nein es reicht nicht den Dienst neu zu starten, Ja du musst den Dienst neu installieren (per CMD- Kommandozeile oder per NAVDBMSnapIn.msc aus dem Server- Verzeichnis, bei letzterer änderst du die Parameter)
Gruß, Fiddi
4. November 2011 09:33
navsyst hat geschrieben:SQL-Datenbank? Ab nächstes Jahr :)
(migriere gerade Datenbank von 3.10 ins RTC)
Abberrr... das war keine Lösung für meine aktuelle Frage! :)
Hätte ja sein können ...
4. November 2011 11:44
kann jemand mir erklären was ich vielleicht falsch gemacht habe bei der neuinstallation neues Dienstes.
Ich habe neue Cache 1000000 eingegeben. Aber zeigt später in Option immer noch nur 10000.
Hat jemand eine Idee? Danke im voraus.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
4. November 2011 12:02
Das ist der DBMS-Cache des Clients, der wird nur benutzt, wenn du lokal mit der DB arbeitest und nicht wie du mit einem Server. Deshalb siehst du den tatsächlichen Cache nur wie ich ihn oben beschrieben habe.
Gruß, Fiddi
4. November 2011 12:10
Hi Fidi,
ich arbeite doch mit dem Server..
Und egal ob ich Navision am Server oder Client local starte, habe ich die gleiche Anzeige.
Habe ich dich falsch verstanden?
4. November 2011 12:14
Was steht unter 'Datei\Datenbank\Informationen' Reiter Datenbank und dort 'DBMS Cache'?
Gruß, Fiddi
4. November 2011 12:19
JETZT HABE ICH KAPIERT!! :)
Sorry.
Ja. Unter Datenbank Information steht 1000000.
Heisst es jetzt dass die Verarbeitung wie massenlöschung schneller werden kann? hoho.....
4. November 2011 12:31
[quote]Heisst es jetzt dass die Verarbeitung wie massenlöschung schneller werden kann? hoho.....
Probiers mal aus, aber wahrscheinlich nicht nur die
Gruß,fiddi
7. November 2011 01:20
Hallo Fiddi,
Danke für den gute Tips. Das beschleunigst aufjedenfalls die massenlöschung.
Aber Tips für Turbo-Delete-codes sind immer noch willkommen.
Gruss
Navsyst
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.