AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi große anzahl von Records löschen
Thema durchsuchen
Ansicht
Themen-Optionen

große anzahl von Records löschen

Ein Thema von Mr.borland · begonnen am 10. Jul 2007 · letzter Beitrag vom 10. Jul 2007
Antwort Antwort
Seite 1 von 2  1 2      
Mr.borland

Registriert seit: 16. Mai 2007
Ort: Plüderhausen
34 Beiträge
 
#1

große anzahl von Records löschen

  Alt 10. Jul 2007, 13:37
Datenbank: Nexus DB • Version: 2.0 • Zugriff über: Delphi 2006
hallo,

gibt es eine möglichkeit um eine große anzahl von Records sehr schnell zu löschen.
meine Tabele ist 40-100Mb groß mit bis zu 500000 Records, und möchte auf einen Schlag alle bis auf 1000 Records löschen.

zür erläuterung:
Es sind Messwerte die Für statistische Auswertung aufgesamelt werden. nun die Tabele wächst ständig
bis die Festplatte voll geschrieben ist. der USER kann aber so zusagen die datenmenge selber Reduziert.

Aber die Grundtabelle bleibt immer erhalten. nun das problem, es kann mal passieren das der USER 1 bis 2 wochen die Datenmenge nicht reduziert. ;-[
ich habe dann eine Menge Datensätze am hals, und mein system ist völligst ausgelastet.

Was ich bis her Versucht habe:

- for schleife : bis zu 1 minute
- Table SetRange : bis zu 20-25 sec.
- und der schnellste Algorithmus bis her ~10sec.
Delphi-Quellcode:
               try
         mwQuery.Close;
         mwQuery.SQL.Clear;
         mwQuery.SQL.Add(Format('delete from mwTable where ID>=%d and id<=%d',[valueStart,valueEnd]));
         nxDatabase1.StartTransaction;
         try
            mwQuery.ExecSQL;
            nxDatabase1.Commit;
         except
            nxDatabase1.Rollback;
         end;
      finally
         mwQuery.Close;
      end;
geht es noch schneller?! bin Dankebar für jede hilfe.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 13:48
Ich denke nicht. Deine Indize müssen ja aktualisiert werden und das dauert nunmal.
Und Transaktionale Steuerung beschleunigt die Sache auch nicht gerade.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 14:05
Du kannst versuchen, das über eine Stored Procedure zu lösen.
Die kannst Du ankicken und die Software läuft weiter, während die SP ihre Dienste macht.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Mr.borland

Registriert seit: 16. Mai 2007
Ort: Plüderhausen
34 Beiträge
 
#4

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 14:08
meine hauptproblem in dieser Sache ist eigentlich nicht direkt die zeit. sondern das mein system(Programm) für ca. 10-20 sec. (löschvorgang) einfriert. das ist verhärend, da ich neben bei noch Serielle und Netzwerk Komunikation überwachen muss.

In der Forschleife habe ich mal mit >> Application.ProcessMessages << probiert.

vieleicht kann mann das problem auf diese oder ähnliche weise umgehen? man tolleriert den Zeitaufwand aber versucht das system im bewegung zuhalten.

ne idee?

DAnke.
  Mit Zitat antworten Zitat
Mr.borland

Registriert seit: 16. Mai 2007
Ort: Plüderhausen
34 Beiträge
 
#5

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 14:09
Stored Procedure !!!

ich probiere es mal.

danke.
  Mit Zitat antworten Zitat
Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#6

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 14:10
Ansonsten würde ich versuchen, die Lösch-Methode in einen Thread auszulagern!
Richard Mahr
  Mit Zitat antworten Zitat
Mr.borland

Registriert seit: 16. Mai 2007
Ort: Plüderhausen
34 Beiträge
 
#7

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 14:13
Welche vorzüge haben den Threads gegenüber StoredProcedures? in der Beschreibung ist eine ähnliche arbeitsweise herraus zulesen.
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 14:19
Eine Stored Procedure ist eine Ansammlung von befehlen, die auf dem DB-Server ausgeführt werden.

Ein Thread ist eine "Abspaltung" von Deinem Programm, die quasi parallel zu Deinem Programm abgearbeitet wird.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 14:20
Zitat von Mr.borland:
Welche vorzüge haben den Threads gegenüber StoredProcedures? in der Beschreibung ist eine ähnliche arbeitsweise herraus zulesen.
Die Frage ist ob eine SP nicht genauso deine Anwendung blockiert wie bisher das direkte löschen.
Hier ist schon ein Thread besser. Aber u.U. mußt du eine neue Verbingung zur DB aufbauen da u.U. deine DB-Zugriffskompos nicht Thread-Save sind.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 14:25
Bei Interbase / Firebird gibt es Execute-Stored-Procedures,die keine Ergebnismengen zurückgeben.
Diese sollten dann "nicht-blockierend" ausgeführt werden können.

Vielleicht gibt es bei Deiner DB etwas ähnliches?
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz