AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Verarbeiten von großer Ergebnismenge wird immer langsamer
Thema durchsuchen
Ansicht
Themen-Optionen

Verarbeiten von großer Ergebnismenge wird immer langsamer

Ein Thema von Bbommel · begonnen am 6. Feb 2009 · letzter Beitrag vom 6. Feb 2009
 
nahpets
(Gast)

n/a Beiträge
 
#5

Re: Verarbeiten von großer Ergebnismenge wird immer langsame

  Alt 6. Feb 2009, 12:53
Hallo,

meine Erfahrung mit SQL-Server ist (mit großen Datenmengen) nicht so groß, aber bei Oracle habe ich schon ähnliche Erfahrungen gemacht.

Wenn man ein SQL absetzt, legt die Datenbank los. Du bekommst nach 17 Sekunden die ersten Ergebnisse, d. h. aber nicht, dass die Datenbank mit ihrer Abfrage schon fertig ist. Nach 17 Sekunden liegen nur die ersten Daten vor (das mag jedoch auch datenbankabhängig sein).

Wenn Du Dein SQL mal in einem DB-Grid anzeigen lässt, solltest Du auch nach ca. 17 Sekunden die ersten Ergebnisse sehen, gehst Du nun mit 'nem DB-Navigator zum letzten Datensatz, kann das schon eine Weile dauern. Habe hier schonmal bei 'ner Oracle-Datenbank und sehr vielen Daten (mehrere Mio. Sätze), Stunden gewartet, bis der letzte Satz zu sehen war.

Es wäre also denkbar, dass Du die Daten schneller abholst, als die Datenbank sie liefern kann.

Mess' mal spasseshalber die Zeit, die vergeht, wenn Du nach dem Open direkt ein Last ausführst. Wann bist Du dann am Ende der Datenmenge? Weitere Sekunden oder Stunden. Bei Sekunden hast Du das Problem im Programm, andernfalls liefert die Datenbank die Daten nicht schneller und Du musst im Programm warten.

Beobachte mal im Programmverlauf im Taskmanager die Speichernutzung, steigt der Speicherverbrauch, wird eventuell im Laufe der Zeit soviel Speicher verbraucht, dass Windows anfängt auszulagern? Wie ist die Speicherentwicklung während der Abarbeitung der While-Schleife, wächst der Verbrauch weiter an?

Hast Du irgendwelche Komponenten, die während der Abarbeitung der Daten, diese in der Oberfläche anzeigen (DB-Grid, DBEdits...)? Dann deaktiviere die mal beim Abarbeiten der Daten.

Auslagerung: Je nach Windowskonfiguration wird auch ausgelagert, wenn der Arbeitsspeicher noch ausreichend groß ist. Windows ist in der Lage, den gesamten Arbeitsspeicher immer auch in die Auslagerungsdatei zu schreiben, um beim Absturz aus der Auslagerungsdatei das Speicherabbild in eine Datei zu ziehen. Ist nun auch noch die Auslagerungsdatei mit einer dynamischen Größe konfiguriert, muss Windows immer wieder ausreichend Platz reservieren. Bei einer stark fragmantierten Platte hat diese dann ziemlich was zu tuen.
  Mit Zitat antworten Zitat
 


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 18:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz