AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird schließt Verbindungen nicht... 100% CPU last
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird schließt Verbindungen nicht... 100% CPU last

Ein Thema von Sascha-L · begonnen am 14. Nov 2007 · letzter Beitrag vom 22. Nov 2007
Antwort Antwort
Seite 2 von 2     12   
PaulJr

Registriert seit: 10. Feb 2007
Ort: Stuttgart
66 Beiträge
 
#11

Re: Firebird schließt Verbindungen nicht... 100% CPU last

  Alt 21. Nov 2007, 21:04
Hallo Hoika,
Du muss es wissen…

Kannst mir bestimmt erklären, wann eine Transaction ein Sinn macht…

Teilweise hast Du schon die Frage beantwortet:

1.) Zum einem immer dort wo Du diese anwendest…, bzw. Dort wo 50 Leute auf einmal auf eine Datenbank zugreifen… mit z.B. 200 SQL-Tabellen und x-Millionen Datensätze…

Na ja, aber dann kommt, hab natürlich vergessen, dass was Du immer programmierst:

Ein RollBack !

Denn mache ich jetzt auch

Viele Grüße

Paul Jr.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#12

Re: Firebird schließt Verbindungen nicht... 100% CPU last

  Alt 21. Nov 2007, 21:28
Hm...

also da hast du was missverstanden.

1.
Unter IB/FB (und in jedem vernünftigen DBMS) wird jede
DB-Aktion (Insert/Update/Delete)
im Rahmen einer Transaktion bearbeitet.

2.
Die Bde kennt einen Mechanismus namens "AutoCommit!
Jede DB-Aktion wird in ein StartTransaktion/Commit gepackt,
ob man das will oder nicht.
Ausnahme siehe 3.

3.
Stösst man eine Transaktion manuell (DataBase.StartTransaction)
kann man mehrere DB-Aktionen durchführen ohne das Commit.
Erst durch das manuelle Anstossen sind überhaupt Sachen wie

2 DB-Aktionen müssen klappen, wenn eine der Aktionen fehlschlägt, vergiss alle Aktionen

mit der BDE überhaupt möglich.

Positiver Nebeneffekt ist eine höhere Geschwindigkeit ...


Alle bisherigen Angaben haben erst mal nichts damit zu tun,
wie viele Clients (sagen wir mal Rechner) auf die DB zugreifen,
wir reden erst mal nur von einem Client.


Was dein Satz 50 Benutzer und Transaktion gemein haben,
verstehe ich gerade nicht
Ist ja auch schon spät...


Nun du dem "was du immer programmierst "
Ich versuche, keine Transaktion auf dem Server offen zu haben,
wenn der Client nichts zu tun hat.


if not DataBase.InTransaction then DataBase.StartTransaction heisst für mich, der Programmierer weiss nicht, ob ein Transaktion offen ist oder nicht.
Und genau da ist das Problem.

Eine offene Transaktion, vielleicht noch in einem Form, was auf Nutzereingaben wartet,
heisst für IB/FB einen Riesenaufwand betreiben (MGA).

Das beste wäre ja, für verschiedene Arbeiten (Tabellen oder Funktionsgruppen) eigene Transaktionen
zu verwenden, aber das und BDE ;( geht nicht.


Es hilft also nur,

1. BDE wech (bin gerade dabei)


2. Mit der BDE noch ein bissel leben (argzzz)
dann keine Transaktionen offen halten

Man müsste dazu sogar mal nen
   Assert(DataBase1.InTransaction=False) vor dem StartTransaction-Code setzen,
um die Stellen zu finden, wo die Transaktion noch offen ist.



Heiko
Heiko
  Mit Zitat antworten Zitat
PaulJr

Registriert seit: 10. Feb 2007
Ort: Stuttgart
66 Beiträge
 
#13

Re: Firebird schließt Verbindungen nicht... 100% CPU last

  Alt 21. Nov 2007, 21:56
Hallo Hoika,

ja, dass ist eine klare, korrekte Antwort die ich auch akzeptiere.

Aber diese Aussage von Dir:
(…)
OK, hier ist es mal nicht notwendig, schadet aber auch nicht.
(…)

kann wirklich einen zukünftigen Programmier in die Ire führen, da was bedeutet schon „schadet aber auch nicht.“
Natürlich so was schadet und zwar gewaltig, da schlechte Angewohnheiten sind später nur schwer bekämpfbar.
Darüber hinaus, man sieht das schon auf den ersten Blick, dass hier, was das Ablauf-Verständnis betrifft noch Nachholbedarf herrscht.

Bewirb sich also ein Programmierer um eine Arbeitsstelle und liefert so etwas an Source-Code
hat er bei 90% Software-Firmen gar keine Chance.

Also, ein guter Programmierer (und Du gehörst mit Sicherheit auch dazu ) sollte hier nicht nur bei Problemen helfen sondern auch, was nicht zu unterschätzen ist: zum gutem Programmierstil verhelfen.


Viele Grüße

Paul Jr.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: Firebird schließt Verbindungen nicht... 100% CPU last

  Alt 22. Nov 2007, 07:28
Hallo,

nun, auf das Posting bekommst du von mir mal 100%, aaach 101 %


Heiko
Heiko
  Mit Zitat antworten Zitat
Sascha-L

Registriert seit: 14. Nov 2007
Ort: Finnentrop
50 Beiträge
 
Delphi 7 Professional
 
#15

Re: Firebird schließt Verbindungen nicht... 100% CPU last

  Alt 22. Nov 2007, 16:36
Vielen Dank an euch, ich werde mich in nächster Zeit mal mit meinem Kollegen zusammensetzen und ihm eure Vorschläge vorstellen, finde Nett, dass ihr euch um meinen Programmierstil kümmert, bin halt noch relativ neu, und auch dieses Projekt ist ziemlich neu für mich.

Falls euch noch andere Sachen einfallen würden, wodurch dieses Problem entstehen kann, wäre ich euch sehr Dankbar für eure Posts und Lösungsvorschläge.

Also vielen Dank


MfG

Sascha
Sascha Lütkemeier
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 20:23 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