AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Viele Datensätze nacheinander erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Viele Datensätze nacheinander erstellen

Ein Thema von Reinhardtinho · begonnen am 22. Jan 2008 · letzter Beitrag vom 25. Jan 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Viele Datensätze nacheinander erstellen

  Alt 24. Jan 2008, 10:34
Noch etwas zur Performance und Sicherheit: Der Zugriff über persistente (oder zur Laufzeit erstellze) Feldobjekte ist ca. 3x so schnell wie der Zugriff über FieldByName. Und bei persistenten Feldern kann man sich auch nicht mehr vertippen.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#12

Re: Viele Datensätze nacheinander erstellen

  Alt 24. Jan 2008, 11:18
Also der SQL Server ist dafür bekannt, sehr schnell so viel wie möglich Speicher für sich in Anspruch zu nehmen. Das mit den 300MB kann also durchaus sein.

Es muss aber gewusst sein, dass ein Insert in eine Tabelle wo bereits viiiiiile Datensätze vorhanden sind, langsamer ist als in eine leere Tabelle einzufügen. Hier mal einige Tipps, an welchen Ecken man schrauben kann:
  • Liegen einige Indizes auf der Tabelle, so kanns z.B. von grossem Vorteil sein, dies erst mal wieder zu entfernen, und nach dem Einfügen der DS wie neu zu erstellen.
  • Auch bietet der SQL Server einen BulkInsert Mechanismus an. Such mal in der T-SQL Hilfe nach Bulk Insert.
  • Es wird auch schon helfen, anstatt über eine Table Komponente zu gehen direkt den SQL Insert Befehl in einer Query Komponente zu formulieren, und diesen dann mit ExecSQL auszuführen. Das erspart den Overhead lokal im Dataset.
  • Du könntest auch ein insert into SQL Befehl nutzen. Warum musst du lokal iterieren, oder ist eine der beiden Tabellen nicht aus einem MSSQL Server
[*]Eventuell ist eine Stored Procedure hilfreich. Du kannst auch intern im SQL Server mit temporären Tabellen arbeiten, die dann nur im Speicher vorliegen. Ein Insert into aus dieser temporären Tabelle sollte wesentlich schneller sein, als im Delphi als zu durchlaufen, und jeden Insert einzeln aufzurufen.[/list]
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
374 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#13

Re: Viele Datensätze nacheinander erstellen

  Alt 24. Jan 2008, 12:38
Wieso editierst Du eigentlich jeden Datensatz immer wieder,
statt nur den Counter für Veränderungen hochzuzählen?

Moin
  Mit Zitat antworten Zitat
Benutzerbild von Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#14

Re: Viele Datensätze nacheinander erstellen

  Alt 24. Jan 2008, 12:50
Hi,

@Jelly:
Danke für die zahlreichen Tipps, ich werde sie heute abend oder morgen ausprobieren.

@stifflersmom:
Den Datensatz editiere ich immer, weil sich an den ID3Tags oder an der Größe etwas geändert haben könnte.
Ich beginne mit einer leeren Datenbank und da tritt das Problem ja schon auf, es wird also immer nur Append aufgerufen.


MFG
Lorenz
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#15

Re: Viele Datensätze nacheinander erstellen

  Alt 24. Jan 2008, 18:20
Mein Vorschlag zu dem Thema wäre, es über ein Query zu machen. Ich erstelle meinetwegen in einer StringList oder in einem Memo alle INSERT-Befehle oder UPDATE-Befehle und gebe dann das Memo oder die StringList in die Query und führe die aus. Sende dann noch ein COMMIT und die Datensätze sind in der Tabelle. Bei meiner Firebird - Datenbank habe ich ca. 7000 Datensätze in 120 Sekunden mit der Methode eingefügt.

Edit:
Ich denke beim SQL Server 2000 funktioniert das genau so schnell.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#16

Re: Viele Datensätze nacheinander erstellen

  Alt 25. Jan 2008, 09:41
Ich würde das prüfen, ob es den Datensatz schon gibt und das Einfügen bzw. ändern über eine Stored Procedure machen. Dazu sämtliche Aufrufe in einer Transaction. Ein Beispiel findest du hier.

Das muss allerdings dein Geschwindigkeitsproblem nicht lösen. Ich sehe ein weiteres Problem beim RAM. Ist das voll muss der Rechner die ganze Zeit hin und her pagen. Also ggf. einfach mal auf nem Rechner mit mehr RAM ausprobieren.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 08:31 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