AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Die DB Anwendung areitet immer langsammer.
Thema durchsuchen
Ansicht
Themen-Optionen

Die DB Anwendung areitet immer langsammer.

Ein Thema von Karstadt · begonnen am 17. Feb 2006 · letzter Beitrag vom 20. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2      
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#1

Die DB Anwendung areitet immer langsammer.

  Alt 17. Feb 2006, 11:31
Datenbank: Mysql • Version: 4.1 • Zugriff über: bde
Hallo. Habe folgendes Problem. Eine DB Anwendung. Produziert jeden Tag ca 50 DS. Die DS werde nie gelöscht. Nun bin ich bei den DS 3000. Die Anwendung arbeitets spürsam langsammer. Woran kann das liegen?

Diese Anwendung greift über BDE->ODBC->MYSQL auf MYSLAM Tabelle zu. Im hintergrund sind 3 Timer.

Danke für ihre Hilfe.
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Die DB Anwendung areitet immer langsammer.

  Alt 17. Feb 2006, 11:43
Wobei arbeitet die Anwendung denn langsamer? Schreiben / Lesen in / aus der DB oder allgemein?
Ich benutz die BDE zwar nich sondern DBX aber evtl solltest du mal nachsehen ob der evtl. versucht alle Datensätze gleichzeitig zu lesen. Das würde extrem viel Speicher benötigen und dem entsprechend wäre das Programm auch langsamer...

Greetz
Boombuler
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?"
SwapIt Highscore:
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.338 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Die DB Anwendung areitet immer langsammer.

  Alt 17. Feb 2006, 11:53
Du hast also mindestens zwei Bremsen drin: BDE und ODBC. Obwohl das mit ODBC nicht mehr so schlimm sein soll.
Wird in den Timern auf die DB zugegriffen?
Greift nur einer zu?
Hast du einen Primary-Key?
Benutzt du Indexe?

Das müsste erstmal geklärt werden.
Peter
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#4

Re: Die DB Anwendung areitet immer langsammer.

  Alt 17. Feb 2006, 11:57
Timer gibt die Zeit aus. Und liest ein DS aus der Tabelle MA. (in diese Tabelle sind das insgesammt)10 DS.

Der anderer Timer liest datensätze aus einen aderer Tabelle.

TTimer ist auf 1000 eingestellt. (ohne Timer bringt das zwar etwas, aber nicht viel!)

Greift nur einer zu?
-JA
Hast du einen Primary-Key?
-JA
Benutzt du Indexe?
-Nein (gibt es bei MYSQL indexe)

Hat das vielleicht damit zutun, das die DB MYSQL ENGINE MYSLAM ist?
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Die DB Anwendung areitet immer langsammer.

  Alt 17. Feb 2006, 13:32
Zitat von Karstadt:
Benutzt du Indexe?
-Nein (gibt es bei MYSQL indexe)
Und schon haben wir dein Problem.
Mit Indizes hast du Suchzeiten von log(b, n), wobei b von der Tabellengröße abhängig ist und zwischen 2-40 betragen wird.
Es ist also durchaus nicht ungewöhnlich, dass du um einen Datensatz aus 10^6 Datensätzen abzufragen nur 5-10 Vergleiche nötig sind.
Ohne Indizes wären es ein paar Tausend mehr.

Mit Indizes wachsen die Suchzeiten also nur minimal mit der Tabellengröße an. Dafür werden Datenänderungen auf die indizierten Felder/Löschungen/Einfügen aufwendiger (Der Index muss neu aufgebaut werden).

Du musst also abwägen aus Abfragegeschwindigkeit und Einfügegeschwindigkeit....
Robert Giesecke
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#6

Re: Die DB Anwendung areitet immer langsammer.

  Alt 17. Feb 2006, 14:50
Meine Frage ist. Wie kann ich bei MYSQL mit INDEXEN arbeiten. Bis jetzt habe ich gedacht, das die MYSQL Ohne Indexe auskommt, weil die Anrfage wie z.B. Sorted By *** ASC oder Where Field = True. Die Datenmenge schon einschrenkt.

Bei DBASE IV war eine extra indexdatei dafür gedacht, aber bei MYSQL ? Wo kann ich mich schlau machen?

So sieht übringes eine Tabelle von mir aus.
Miniaturansicht angehängter Grafiken
0001_166.gif  
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#7

Re: Die DB Anwendung areitet immer langsammer.

  Alt 17. Feb 2006, 15:21
Indizes schränken die Datenmenge nicht direkt ein, sie helfen nur, wenn die Datenmenge per WHERE eingeschränkt wird. SORTED BY schränkt auch nicht ein, sondern sortiert nur. Um einen Index zu erstellen nutze ALTER TABLE `tabelle` ADD INDEX (`name_der_spalte`) Und, wenn's geht, nutze die zeoslib statt ODBC & BDE.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

Re: Die DB Anwendung areitet immer langsammer.

  Alt 17. Feb 2006, 16:56
Zitat von Karstadt:
Meine Frage ist. Wie kann ich bei MYSQL mit INDEXEN arbeiten. Bis jetzt habe ich gedacht, das die MYSQL Ohne Indexe auskommt, weil die Anrfage wie z.B. Sorted By *** ASC oder Where Field = True. Die Datenmenge schon einschrenkt.
Der Index beschleunigt nur die bestimmung der Ergebnismenge. Aber das MySQL keine serverseitigen Curser hat werden alle Datensätze beim Öffnen der Query sofort an den Client übertragen. Und schätz mal wieviel Bytes bei 3000 Datensätzen übers Netz geschaufelt werden müssen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

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

Re: Die DB Anwendung areitet immer langsammer.

  Alt 17. Feb 2006, 17:23
Prinzipiell sollte immer sollte IMMER vermieden werden, 3000 Datensätze zum Client zu schippen. It nicht nur langsam, sondern zudem wird kein Mensch diese 3000 Datensätze durchwühlen, um was zu suchen. Für solche Zwecke lässt Du den Anwender Filter setzen, die Du dann geeignet in deiner SQL Abfrage einbaust.

Frage: Überträgst Du alle Datensaätze. Wenn nein, wie filterst Du. Ich hoffe nicht mit der "Filter" Eigenschaft deines Datasets.

Und noch was, was ich nicht verstehe: Du hast mittlerweilen schon etliche Threads eröffnet, wo Du nach Alternativen zu BDE fragst, und scheinst dich ja mittlerweilen für die MyDAC Komponenten zu begeistern. Kannst Du mir erklären, warum Du denn in diesem Fall die BDE trotzdem nutzt. Macht doch keinen Sinn.

Noch was Entscheidendes: Wo liegt die Datenbank? Lokal (bzw. im LAN) oder im Internet?
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#10

Re: Die DB Anwendung areitet immer langsammer.

  Alt 17. Feb 2006, 20:50
Hallo.

Zitat:
Frage: Überträgst Du alle Datensaätze. Wenn nein, wie filterst Du. Ich hoffe nicht mit der "Filter" Eigenschaft deines Datasets
Nein in diesen Fall würde auch alle DS übertragen! Filtrierten DS werden angezeigt andere ausgeblendet.

Zitat:
Und noch was, was ich nicht verstehe: Du hast mittlerweilen schon etliche Threads eröffnet, wo Du nach Alternativen zu BDE fragst, und scheinst dich ja mittlerweilen für die MyDAC Komponenten zu begeistern. Kannst Du mir erklären, warum Du denn in diesem Fall die BDE trotzdem nutzt. Macht doch keinen Sinn.

Noch was Entscheidendes: Wo liegt die Datenbank? Lokal (bzw. im LAN) oder im Internet?
Das ist ein bestehender Projekt der vor Monaten MIT Bde Komponenten programmiert wurden. Alle neue Projekte programmiere ich mit der neue Komponente.

Die DB liegt lokal! Die wir mit Select * from xxx aufgerufen ohne where (das ist bestimmt ein fehler!)

es werden neue "buchungssätze" als offen hinzugefügt. Interessant ist nur diese DS. Wenn ein Auftrag ferti ist wird eine Feld auf "Fertig" gesetzt. In meinen Fall kann ich die erledigten aufträge ausblenden (das sind ca 2000!).

Danke, das werde ich ausprobieren!

An einigen Stellen arbeite ich mit Locate und Loockup. Soll ich das auf SQL umstellen?
  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 22:53 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