Firebird transactions in details
Firebird transactions in details is about multi-versioning: isolation, markers, commit and rollback, garbage collection, sweep, and how to diagnose transaction problems in applications.
Syllabus
- How record versions are created
- Transaction states: active, committed, rolled back, limbo
- Visibility of versions; Read Committed vs Snapshot
- Triggers on transaction start/stop; transaction-level context variables
- What happens at transaction start; global markers OAT, OST, OIT
- Commit; standard rollback with cache flush vs forced rollback without flush
- Rollback with and without undo-log; retaining transactions
- Temporary BLOBs; undo-log; auto-commit
- Memory for transactions; local TIP and related issues
- How transactions interact; conflicts; templates for applications
- Scenarios: readers/readers, readers/writers, writers/writers; best practices
- Garbage collection vs sweep; autosweep pros and cons
- Application mistakes that create excessive garbage
- Diagnosing problems: OIT/OST/OAT/NEXT combinations; when GC does not run
- How much garbage; finding long transactions with MON$
- Monitoring with MON$ and Trace API
- Workarounds for legacy applications with broken transaction handling