Zitat:
Aber ein Commit brauche ich nur beim Ändern von Daten, richtig?
Nein. In Firebird läuft alles in Kontext von Transaktionen, auch lesende Zugriffe und auch diese Transaktion muss beendet (Commit/Rollback) werden.
Zitat:
Kann ich für verschiedene Lesevorgänge in der
db die selbe transaction verwenden
Natürlich. Mit IBX stopelst dir das eben mit einer TIBTransaction zusammen, die dann von mehreren
Query-Komponenten verwendet wird. Über den Isolation-Mode steuerst du dann was die einzelnen Abfragen im Kontext dieser Transaktion von anderen committed Transaktionen "mitbekommen".
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.