Einzelnen Beitrag anzeigen

tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#9

AW: Stored Procedure: Rückgabewert

  Alt 12. Mär 2011, 11:09
Hallo Frederic,

dein Verständnis zu Transaktionen sind prinzipiell richtig. Das Ganze in Verbindung mit Firebird wäre jetzt eine etwas längere Geschichte, aber prinzipiell ist ein ständiges COMMIT RETAINING (eine spezielle Form von COMMIT, wo der Transaktionskontext erhalten bleibt) über eine längere Dauer für den Firebird Server nicht gut, weil hiermit das Fortschreiten der "Oldest Active Transaction" blockiert wird. Ich erwähne das deswegen, weil jeglicher AutoCommit Modus ein COMMIT RETAINING verwendet. Man muss dann schon mal von Zeit zu Zeit ein COMMIT anstatt von COMMIT RETAINING ausführen, damit man hier nicht in ein Performanceproblem reinläuft. Dazu am besten die Transaktions-Counter (ermittelbar über gstat -h oder Admin/Dev-Tool) im Auge behalten.

Gerade für deinen Anwendungsfall, wo es um das Anlegen eines Benutzers geht, würde ich eine explizit gestartete Transaktion vorziehen. Wer weiss, wer sonst noch die interne/implizite Transaktion der Connection in Verwendung hat. Ist sauberer und frei von Seiteneffekten, weil man hier mit der eigenen Transaktion alles selbst im Griff hat.

Was ich gerne mit AutoCommit verwende sind Datenmengen, die im Kontext einer ReadOnly-Transaktion geöffnet wurden, sofern die Datensätze nicht bearbeitet werden müssen.

Thomas
  Mit Zitat antworten Zitat