![]() |
Geschwindigkeit Datenbank <-> Delphi
Hey,
In meiner Anwendung haben ich ca. 1000 Paradox-Tabellen(*.db) In jeder Tabelle werden pro Tag ca 300 Einträge gespeichert. Aus diesen Tabellen werden Werte entnommen, in komplexen Formel berechnet und in einer Temp-Tabelle gespeichert. Nun meine Frage: Wie muss ich meine Anwendung gestallten, damit die Berechnungen schneller durchlaufen werden? Was bringt es auf einer andere DB zu gehen z.B. MySQL oder Firebird? Wie begrenzt die Geschwindigkeit? Delphi oder die Datenbank? Vielen Dank für eure Antworten im Voraus |
Re: Geschwindigkeit Datenbank <-> Delphi
Hallo Hansi,
wenn du auf alle Daten in allen Tabellen zugreifen musst und die Tabellen lokal sind, bringt eine Portierung nach Firebird wahrscheinlich nicht viel. Es könnte etwas bringen, die Anzahl der Tabellen zu verkleinern. Natürlich kann auch die komplexe Berechnungf eine Menge Zeit beanspruchen. |
Re: Geschwindigkeit Datenbank <-> Delphi
Hi,
ich bin nicht ganz Deiner Meinung: Bei Verwendung eines Datenbankservers (mit entsprechenden Ressourcen) und der Verwendung von StoredProcedures sowie UDF's sollten die Berechnungen alle auf dem Server laufen, was sich zumindest in einer gewaltigen Verringerung des Netztraffics auswirkt und aus diesem Grund auch schneller ablaufen wird. Allerdings ist dazu einiges an Arbeit für die Umstellung notwendig! Grüße Lemmy |
Re: Geschwindigkeit Datenbank <-> Delphi
Meine Tabellen sind alle lokal. Bedeutet dies dass ich z.B. MYSQL, Firebird und andere eigentlich nicht brauche?
Was macht den größten zeitlichen Anteil aus, der Zugriff auf eine Datenbank(Lösung wäre z.B. Tabellen verkleinern) oder der Berechnungsteil(Lösung wäre z.B. Berechnung mit DLL oder ähnliches durchzuführen) Was würdet Ihr empfehlen wie ich am besten die Berechnung machen sollte? (geschwindigkeit!) Was sind eure Vorschläge? |
Re: Geschwindigkeit Datenbank <-> Delphi
Hallo Lemmy,
ich stimme dir ja auch voll zu und ich hatte bei meiner Aussage gesagt, das diese nur gilt, wenn die Tabellen lokal sind. |
Re: Geschwindigkeit Datenbank <-> Delphi
Zitat:
Sobald es in einer Datenbank 2 (oder mehr) Tabellen mit gleicher Struktur gibt, deutet dies auf einen Datenbank Designfehler hin. (Ausnahme: die 2. Tabelle dient als Archiv für die 1.) |
Re: Geschwindigkeit Datenbank <-> Delphi
Warum Designfehler?
Jede Tabelle ist für eine eigene Art(Kurse von Aktien). Die Spalten sind zwar in allen gleich. in den Zeilen steht jeweils das Datum mit Uhrzeit und dann verschiedene Werte. Warum Desginfehler? |
Re: Geschwindigkeit Datenbank <-> Delphi
Zitat:
|
Re: Geschwindigkeit Datenbank <-> Delphi
Wie schlägst Du das Datenbank Design für Aktienkurse vor?
|
Re: Geschwindigkeit Datenbank <-> Delphi
Zitat:
Code:
Es gibt eine weitere Tabelle namens Aktien:
Tabelle: AktienKurse
====================== IdAktie Integer (Primärschlüssel) Zeitpunkt DateTime (Primärschlüssel) Kurs Money
Code:
Du arbeitet dann nicht mehr mit TTable sondern mit TQuery.
======================
IdAktie Integer (Primärschlüssel) WKN string(15) Bezeichnung string(50) Herausgeber string(80) Valid Boolean AktRating string(3) ..... In der Eigenschaft SQL steht dann
SQL-Code:
Dadurch, dass nun alle Kurse in einer Tabelle gespeichert sind, kannst du viel einfacher verschiedene Aktien miteinander vergleichen.
SELECT * FROM AktienKurse WHERE IdAktie=:IdAktie
|
Re: Geschwindigkeit Datenbank <-> Delphi
Vielen Dank für Deine Rückmeldung
Mein Problem ist die Masse der Daten. daher dieser Thread. Aufgrund von Geschwindigkeitsoptimierungen habe ich für jede Aktie eine Tabelle gemacht. Bei tausenden Aktien mit mehreren hunderten Einträgen pro Tag kannst Du Dir vorstellen, dass eine Datei nicht sinnvoll ist. Daher die Frage ist es aus GEschwindigkeitssicht besser MYSQL oder Firebird zu nehmen anstatt Paradox bzw BDE? |
Re: Geschwindigkeit Datenbank <-> Delphi
Zitat:
Beim Lesen wird ein Index benutzt, um die Datensätze einer Aktie zu lesen. Die Verwendung von TTable zum Einbuchen der Daten ist ein Geschwindigkeitskiller. :warn: Grund: beim Öffnen einer Tabelle werden unnötigerweise alle Datensätze abgerufen, obwohl man ja nur einfügen möchte. Hier kann man mit einer Query viel Boden gut machen:
SQL-Code:
SELECT * FROM Tabelle WHERE 0=1
Zitat:
Wichtiger für die Performance ist manchmal auch das richtige Design verbunden mit der Wahl der richtigen Indizies. |
Re: Geschwindigkeit Datenbank <-> Delphi
OK mit BDE also nicht.
Mit Query und SQL oder gleich mit z.B. MYSQL? Was wäre Dein Vorschlag für die Berechnungen? Wie würdest Du das machen? (mit Berechnungen ist gemeint z.B. Indikatoren, Integrale...) |
Re: Geschwindigkeit Datenbank <-> Delphi
Hallo Hansi,
für lokale Datenbanken ist Paradox hervorragend geeignet. Probleme kann es im Netzt bei Mehrfachzugriff unter Win XP geben, aber für deine Anwendung sehe ich kein Problem mit Paradox und der BDE. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:11 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