Autor Beitrag
freddy437
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Fr 03.12.04 10:49 
Hallo alle zusammen,

ich habe folgendes kleineres Problem.

Beim Starten meines Programms und beim ersten Zugriff auf die Daten einer Paradox-Datenbank benötigt das Programm fast 15 Sekunden. Ist dies erst einmal abgeschlossen, gehen die Zugriffe sehr schnell. Manchmal geht der erste Start auch affenschnell von sich.

In dem Datenbankordner existieren derzeit auch ca. 80 Tabellen. Manche Tabellen beinhalten mehr als 150.000 Datensätze. Mir ist aufgefallen, wenn ich darauf mit dem SQL-Explorer zugreife, dauert es auch manchmal einige Sekunden, bis ich die Tabellen sehe.

Gibt es eine Möglichkeit beim starten des Programms die Datenbank zu initialieren und den erfolgreichen Prozess abzufragen. Mein Problem ist hauptsächlich, dass das alles nicht planbar ist und das Programm in der Zeit zu hängen scheint (trotz tread).

Danke schon im voraus
bug0815
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62

Win2000, Xp, Vista
Delphi 2006, 2009
BeitragVerfasst: Fr 03.12.04 10:59 
Hallo,

ich kann Dir leider nicht direkt helfen, aber hast Du Dir angesichts der Größe Deiner Datenbank schon mal Gedanken gemacht die Paradox Schiene zu verlassen? (Zum Beispiel in Richtung mySQL oder anderer Datenbank Systeme!!)
greg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 119

Windows2000, WindowsXP
D5 Prof
BeitragVerfasst: Fr 03.12.04 11:15 
Hallo Freddy,

ich könnte mir vorstellen, das die BDE das irgendwie cached, d.h. dass nach dem ersten öffnen der Datenbank die Zugriffe schneller gehen, weil die Daten schon irgendwo im Speicher gehalten werden - zumindest eine gewisse Zeit lang.
Du könntest versuchen ein Programm zu schreiben, dass automatisch beim Start von Windows, unsichtbar, als Task gestartet wird und dessen Funktion einzig darin besteht die BDE anzutriggern die Daten irgendwo zwischenzuspeichern. Bei den Datenmengen, müsstest Du per Task Manager gut nachvollziehen können, was sich tut.

Ansonsten ... wie wäre es, wenn Du mit dem Starten Deines Threads ein 'Bitte warten' fenster anzeigst, das geschlossen wird, sobald die Datenbank initialisiert ist?

Gruß
Gregor
freddy437 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Fr 03.12.04 11:16 
Habe ich.

dagegen spricht ist allerdings, dass das Programm jeder installieren soll. Wir setzen den InstallShield Express (BE) ein. Und da kann ich keine runTime zur Installation einer mySQL-Datenbank einbinden. Eine separate Installation ist für den Endanwender zu schwer. Manche wußten noch nicht einmal, dass man zur Installation auf "Setup" doppelklicken muss. Ich wollte eigentlich komplett den Pfad "BDE" mal verlassen. Ich finde ja postgreSQL auch toll. Dazumal dies jetzt auch unter Windows läuft. Aber das sind noch Träume
freddy437 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Fr 03.12.04 11:33 
Vielen Dank Gregor für den Tipp.

Ich weiß nur nicht, wie ich das Cachen der BDE bzw. der Datenbank anstoßen kann. Ich wollte dies während der Anzeige des Splash-Bildes vornehmen.

Die Suche an sich habe ich in einem Thread gepackt. Während der Suche geht auch ein Fortschrittsbalken an. Da ich aber nicht weiß, wie lange es noch dauert und es manchmal sehr lange dauert und manchmal sehr schnell geht ist die Anzeige auch pillepalle.

Dumm ist auch, dass der Such-Thread manchmal nicht in das onTerminate-Ereignis springt und das Programm sich im Kreise dreht. Darum schiesse ich den Thread nach 25 sek ab. Die feine englische Art ist das aber auch nicht.

Hast du eine Idee, wie ich die Initialisierung anschieben kann?
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 03.12.04 12:20 
@freddy:
Schau dir mal das aktuelle Gewinnspiel an. Das wäre evtl. die richtige DB.
Von einem Anwender sollte man inzwischen erwarten können, dass er weiß, wie ein Setup funktioniert.

Musst du wirklich alle Tabellen schon am Anfang öffnen? Falls nicht, würde ich das auch nicht machen. Das verkürzt die Startzeit dann schon um einiges.
Jede Initialisierung die du meinst, führt zum Öffnen der Tabellen. Beim ersten mal (Initialisierung) wird es immer langsam sein. Erst wenn die Daten einmal geholt werden, hat die BDE überhaupt eine Chance die Daten in den Cache zu packen.