AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FireBird - Too many Savepoints?
Thema durchsuchen
Ansicht
Themen-Optionen

FireBird - Too many Savepoints?

Ein Thema von TUX_der_Pinguin · begonnen am 26. Aug 2008 · letzter Beitrag vom 27. Aug 2008
Antwort Antwort
Seite 2 von 3     12 3      
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: FireBird - Too many Savepoints?

  Alt 27. Aug 2008, 09:39
Zitat:
Zur Zeit kämpfe ich dafür an Performance problemen, ich beführchte das FireBird nie so flott sein kann/wird wie z.b.
ein Dedizierter MySQL Server aber das ist ein anderes Thema.
Und warum nicht?
Zeos ist halt nicht die erste Wahl.
Markus Kinzler
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: FireBird - Too many Savepoints?

  Alt 27. Aug 2008, 09:52
Ich habe z.b. eine Abfrage die mir die letzten N Datensätze ermitteln soll, bei mySQL sähe das wie folgt aus.

SELECT * FROM TAB ORDER BY Datum,DevNo ASC LIMIT 48721,40 48721 ist das Ergebnis aus der Gesamt Anzahl der Datensätze minus der gewünschten 40 Datensätze
dabei braucht diese Abfrage ca. 3-4 sekunden.


Bei Firebird sieht die Abfrage wie folgt aus und benötigt dort ca. 12-13 sekunden.
SELECT FIRST 40 SKIP 48721 * FROM TAB ORDER BY Datum,DevNo ASC
Hmm was wäre den anstelle von Zeos deiner Meinung nach die erste Wahl?!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: FireBird - Too many Savepoints?

  Alt 27. Aug 2008, 10:02
Wie sieht es mit Indizes aus?
Schneller als Zeos ist IBDAC, FIBplus, IBObjects, ...
Markus Kinzler
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: FireBird - Too many Savepoints?

  Alt 27. Aug 2008, 10:04
Zitat von mkinzler:
Wie sieht es mit Indizes aus?
Schneller als Zeos ist IBDAC, FIBplus, IBObjects, ...
Was für Indizes meinst du?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: FireBird - Too many Savepoints?

  Alt 27. Aug 2008, 10:06
Der Tabelle. Existiert ein Index auf die Felder Datum und DevNo?
Markus Kinzler
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: FireBird - Too many Savepoints?

  Alt 27. Aug 2008, 10:07
Nein, das habe ich bisher nicht gemacht müßte ich mir anschauen wie ich diese Felder indiziert bekomme.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#17

Re: FireBird - Too many Savepoints?

  Alt 27. Aug 2008, 13:14
Zitat von TUX_der_Pinguin:
..Was sind den diese Savepoints überhaupt und wozu sind diese gut, ich raff das noch nicht so ganz.
Du musst endlich anfangen, Transaktionen zu verstehen. mkinzler hat jetzt oft genug von "Teiltransaktionen" gesprochen. Beispiel : wöchentliche Lieferung und es wird in Folgewoche wieder was zurückgenommen. Das soll auf eine Rechnung.

Wie sehen solche Vorgänge nun im Programm aus ? 1. Die Lieferung wird eingegeben. Sobald fertig, wird die Rückgabe eingegeben. Hierbei wurde der falsche Schein erwischt. Jetzt gibt es zwei Mölichkeiten :

1. Alles rückgängig machen, was bedeutet, auch die 100 Eingaben der neuen Bestellung neu machen zu müssen. Dabei ist auch vorausgesetzt, dass man bei jedem zusammenhängenden Vorgang zumindest eine Transaktion startet. Ansonsten kann auch die Arbeit eines ganzen Tages weg sein.

2. Man setzt nach der Eingabe der neuen Bestellung einen Savepoint. Wie gesagt, falschen Rücknahmeschein erwischt und das fällt erst nach Eingabe von 100 Rückgaben auf. 8) Dann mache ich eben ein RollBackToSavePoint und habe zumindest das neueingeben der Bestellung, die richtig war gespart.

Im DB-Bereich hat schon alles einen gewissen Sinn, keine Angst.

Zitat von TUX_der_Pinguin:
...ich beführchte das FireBird nie so flott sein kann/wird wie z.b.
ein Dedizierter MySQL Server aber das ist ein anderes Thema.
Du beschäftigst dich ja anscheinend nicht mit Grundlagen. Warum wird überhaupt die FB embedded Version für die Entwicklung benutzt ? Zeos kann sowieso nur vernünftig mit einer Transaktion umgehen, wenn überhaupt.
Gruß
Hansa
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: FireBird - Too many Savepoints?

  Alt 27. Aug 2008, 13:33
Ich habe eine Anwendung die Messdaten Verwalten soll, d.h. Messungen werden von einer anderen Anwendung im Netzwerk
gespeichert, da jede Messung in einer sparaten Datei gespeichert wird, ist die suche nach einer oder mehren Messungen
sehr Zeitaufwending.
Den wenn ich z.b. über 80.000 Messungen (Dateien) vorliegen habe, muß ich jede Datei öffnen schauen ob sie den
Suchkritierien entspricht und dann entsprechend in meiner Anwendung auflisten.
Diesen vorgang wollte ich mir ersparen indem ich eine Datenbank einsetze in der die Messungen stehen,
dort ließe sich ja viel schneller suchen.

Da ich unabhängig und flexibel bleiben möchte dachte ich es macht am meisten Sinn eine Embedded Datenbank einzusetzen,
weil auf dem Anwender Rechner nichts mehr installiert werden muß außer die eine Anwendung und keinen Datenbank Server etc.

Warum man jetzt FireBird Embedded nicht für die Entwicklung nutzen sollte, verstehe ich nicht.
Ich lerne in der Fahrschule ja auch mit einem Auto das Autofahren und nicht mit einem Roller.

Das Prinzip von den Transaktionen habe ich denke ich einigermaßen Verstanden, ich kann diverse aktionen ausführen und erst
wenn klar ist das alles in ordnung ist kann ich dann die aktionen bestätigen "Commit" oder ein "Rollback" durchführen
um die Änderungen rückgängig zumachen.

Also müßte ich vor einem Insert einen "Savepoint" setzen dann das Insert ausführen und dann muß ich das jetzt noch mit
einem "Commit" bestätigen!? Wieso reicht es da nicht aus eine einfache "Insert" Anweisung auszuführen.

In der Anwendung gibt es eh nur eine Tabelle in einer Datenbank, es ist ja nicht so das ich in Tabelle X etwas einfüge und
wenn in Tabelle Y etwas schief geht das ich den Eintrag aus X wieder rückgängig machen will, das verstehe ich unter Transaktionen.


Mein Problem ist halt ich muß ja irgendwie Anfangen das Problem umzusetzen und wenn man im Internet stöbert findet man
hunderte von Datenbank Systemen und hunderte Möglichkeiten auf diese zuzugreifen, wie soll man als Laie sofort und ohne
Studium aller Dokumentationen herrausfinden was man benötigt also greift man auf das zu was man kennt oder wovon man
schon gehört hat und probiert damit aus das vorhandne Problem zu lösen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#19

Re: FireBird - Too many Savepoints?

  Alt 27. Aug 2008, 13:40
Zitat:
Warum man jetzt FireBird Embedded nicht für die Entwicklung nutzen sollte, verstehe ich nicht.
Währrend der Entwicklung bietet sich es an die Serverversion zu nehmen, so dass parallel von der IDE, deinem Programm und einem Admintool auf die Datenbank zugegriffen werden kann.
Zitat:
Also müßte ich vor einem Insert einen "Savepoint" setzen dann das Insert ausführen und dann muß ich das jetzt noch mit
einem "Commit" bestätigen!? Wieso reicht es da nicht aus eine einfache "Insert" Anweisung auszuführen.
Eine SavePoint würde ich nur machen wenn eine Tranaktion aus sehr vielen Operationen besteht. Starte die Tranaktion manuell und rufe nur in einem bestimmten Intervall (z.B. Anzahl von Inserts) Commit auf.
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#20

Re: FireBird - Too many Savepoints?

  Alt 27. Aug 2008, 13:57
Sieht so aus, als hätteste Transaktionen immer noch nicht ganz gerafft.

Zitat von TUX_der_Pinguin:
Da ich unabhängig und flexibel bleiben möchte dachte ich es macht am meisten Sinn eine Embedded Datenbank einzusetzen,
weil auf dem Anwender Rechner nichts mehr installiert werden muß außer die eine Anwendung und keinen Datenbank Server etc.

Warum man jetzt FireBird Embedded nicht für die Entwicklung nutzen sollte, verstehe ich nicht.
Ich lerne in der Fahrschule ja auch mit einem Auto das Autofahren und nicht mit einem Roller.
...
Was ist schlimm daran, einen Datenbank-Server zu installieren ? Ein paar Klicks zu machen ? Embedded ist wesentlich komplizierter und die paar MB interessieren heute nicht mehr.

Und die Fahrschule ist wirklich hervorragendes Beispiel. Du lernst Autofahren mit einem embedded Einrad.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 21:13 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