![]() |
AW: Wie langsam ist Firebird über Internet wirklich?
Zitat:
@RWarnecke: Denkst du, dass Stored Procedures das ganze schneller machen, als die eine TIBQuery Abfrage von Shmia? Hier wird ja auch nur noch eine einzige Zahl an den Client übermittelt. @Lemmy Danke für die Tipps. Ich werde Tibtable nicht mehr verwenden. Ich habe auch schon daran gedacht, einen TCP Server zu verwenden, der die DB lokal ansteuert. Habe die Idee aber zunächst verworfen, da der Server ein Debian System ist und ich dann den FPC verwenden müsste + sehr viel Arbeit für das kleine Programm. Macht es sinn, in meiner Funktion, die 20 mal aufgerufen wird, jedes mal eine neue Transaction zu erstellen und diese hinterher wieder zu zerstören? Wäre es schneller/sinnvoller, die transaction nur einmal zu erstellen? |
AW: Wie langsam ist Firebird über Internet wirklich?
Zwei Optimierungstipps:
* Transaktionshandling aus der Routine rausziehen (wie du richtig erkannt hast), d.h. eine Transaktion starten, Abfragen ausführen, Transaktion mit einem Hard Commit comitten, fertig. * Verwende eine Prepared-Query, die einmal Prepared wird, mit jedem Aufruf mit den neuen Parameterwerten befüllt and dann ausgeführt wird. So ersparst du dir den ständigen Traffic im Prepare-Schritt der Abfrage |
AW: Wie langsam ist Firebird über Internet wirklich?
Unter Umständen hilft es auch den Verkehr beim Zugriff übers Internet zu Tunneln ( ZeDeBee, stunnel).
|
AW: Wie langsam ist Firebird über Internet wirklich?
Zitat:
@tsteinmaurer Aber ein Commit brauche ich nur beim Ändern von Daten, richtig? Kann ich für verschiedene Lesevorgänge in der db die selbe transaction verwenden? |
AW: Wie langsam ist Firebird über Internet wirklich?
Grundsätzlich brauchst du ein Commit nur nach einem Schreibvorgang. Wichtig ist e aber eine Transaktion abzuschließen (commit oder rollback).
|
AW: Wie langsam ist Firebird über Internet wirklich?
Zitat:
Zitat:
Leider kümmern sich die Leute in der Regel kaum um das Transaktions-Management in der Client-Anwendung, ohne deren Auswirkungen zu kennen. Vor allem wenn man neu mit Firebird zu arbeiten beginnt. Das ist auch ein Hauptgrund für Performanceprobleme, wenn man z.B. langlaufende Transaktionen offen hat oder (unbewusst) in einem AutoCommit-Modus fährt, der für jede Abfrage automatisch eine neue Transaktion startet und diese automatisch auch wieder mit COMMIT RETAINING beendet. COMMIT RETAINING über eine längeren Zeitraum ohne regelmäßige HARD COMMITs kann für den Firebird Server eine Spaßbremse werden. |
AW: Wie langsam ist Firebird über Internet wirklich?
@tsteinmaurer: Okaydokay, die prepared-querys bringen nochmal eine Sekunde. Jetzt bauche ich noch das Commit ein. Bisheriger Code:
Delphi-Quellcode:
//edit: @Steinmaurer: Mit einem ta.commit; am Ende (nachdem IsEMailInDBQuery.Close) macht die Geschichte wieder ca. eine Sekunde langsamer?!
function TDataBaseConnection.IsEMailInDB(CustomerID:integer;EMailDate:tDateTime):boolean;
begin if not assigned(IsEMailInDBQuery) then begin IsEMailInDBQuery:=TIBQuery.Create(nil); IsEMailInDBQuery.Database:=DB; IsEMailInDBQuery.Transaction:=ta; IsEMailInDBQuery.SQL.Text := 'SELECT COUNT(*) FROM DOCUMENTS'; IsEMailInDBQuery.SQL.Add('WHERE CUSTOMER = :CUSTOMER AND MODIFYDATE = :MODIFYDATE'); IsEMailInDBQuery.Prepare; end; IsEMailInDBQuery.Params[0].AsInteger:=CustomerID; IsEMailInDBQuery.Params[1].AsDateTime:=EMailDate; IsEMailInDBQuery.open; result := IsEMailInDBQuery.Fields[0].AsInteger <> 0; IsEMailInDBQuery.Close; end; |
AW: Wie langsam ist Firebird über Internet wirklich?
Zitat:
|
AW: Wie langsam ist Firebird über Internet wirklich?
Zitat:
|
AW: Wie langsam ist Firebird über Internet wirklich?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 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 by Thomas Breitkreuz