Firebird Tour 2013: seminar “All About Transactions”

Siegburg, November 22, Kranz Park Hotel

Prague, November 25, Hotel Extol Inn
The speakers at the tour are Vlad Khorsun (Firebird Core Team), Alexey Kovyazin (IBSurgeon), Dmitry Kuzmenko, and Pavel Cizar.

Overview

# Topic Speaker Time
1 Overview of transactions concept and its parameters. Examples of transactions parameters and their usage. Alexey Kovyazin/Pavel Cizar 45
2 Transaction in Firebird: peculiarities and special parameters.  Transaction inventory page, versions and how transactions work in multi-generation database. Dmitry Kuzmenko 60
  Coffee-Break   15
3 Inside Firebird transactions: what happen inside engine during transactions’ start, commit, rollback. What is retaining, autocommit, how transactions work with GTT. Memory consumption for transactions processing. Vlad Khorsun 60
4 Transactions interaction and best practices for application development. Conflicts between transactions. Dmitry Kuzmenko 60
  Lunch   60
5 Garbage collection mechanism and sweep in details Vlad Khorsun 45
6 Transactions management in various drivers (Delphi, .NET, Java, etc): parameters and approaches. Dmitry Kuzmenko/Jiri Cincura 45
  Coffee-Break   15
7 Diagnosing transaction management problems: most prevalent problems, how to catch and fix them. Alexey Kovyazin 60
8 Round table (including Firebird 3.0 QA)   45

Detailed plan

        1.       Overview of Firebird development

  1. New features and details of Firebird development,
  2. Plan for next releases

        2.       Overview of transactions concept and its parameters.  Examples of transactions parameters and their usage.

  1. Historical overview of transactions: locking engines, dirty read, why Firebird has only snapshot и read_committed
  2. Transaction as logical operation: bridge between business logic and database implementation
  3. What is ACID
  4. Isolation levels: standard levels and Firebird levels
  5. read only\write
  6. wait and nowait
  7. Examples of transactions with various isolation levels, read-only/write and wait/nowait, from the client point of view

        3.       Transaction in Firebird: peculiarities and special parameters.  Transaction inventory page, versions and how transactions work in multi-generation database.

  1. Full syntax of SET TRANSACTION and TPB parameters
  2. Some undocumented parameters
  3. Who create transactions
    1. Application
    2. System transaction (tx #0)
    3. Garbage collector
    4. Autonomous transactions
    5. Triggers ON CONNECT\ON DISCONNECT
  4. Versioning basics
  5. How versions are being created
  6. States of transaction in Firebird (active, committed, rolled back, limbo)
  7. Visibility of record versions in transactions
  8. Key differences between Read Committed and Snapshot
  9. Triggers for transactions start and stop
  10. Context variables at transaction’s level

4.    Inside Firebird transactions: what happen inside engine during transactions’ start, commit, rollback.

  1. What happens at transactions’ start
    1. Global transaction markers (OAT, OST, OIT) and their meaning
    2. Autosweep
  2. What happens at transaction commit
    1. How DWF works
    2. DDL queries
    3. Dispatching events
    4. Flush of dirty pages
    5. TIP processing
  3. What happens at rollback
    1. Standard rollback with cache flush
    2. Forces rollback without cache flush
    3. Rollback transactions with undo-log
    4. Rollback without undo-log
  4. What is retaining
  5. Auto-commit (does anybody know about it?)
  6. Managing memory for transactions
    1. Temporary BLOBs
    2. Undo-log
  7. Local TIP and related issues

        5.   Transactions interaction and best practices for application development. Conflicts between transactions.

  1. Transactions interactions types
  2. Templates for transaction usage in application development
  3. Scenarios breakdown: Readers and Readers, Readers and Writers, Writers and Writers
  4. Best practices
    1. Dictionaries
    2. Splitting read and write transactions
    3. Locking record with empty Update
    4. Locking with SELECT WITH LOCK
    5. Reports
    6. Serialization: how to build effective queues

6.  Garbage collection mechanism and sweep in details       

  1. Why we need sweep?
  2. How sweep works
  3. Types of the sweep: cooperative, background, background
  4. Differences between sweep and garbage collection
  5. Autosweep: pro and contras
  6. Examples of application design mistakes which lead to excessive garbage

7.    Transactions management in various drivers (Delphi, .NET, Java, etc): parameters and approaches.

  1. What are direct and non-direct client drivers?
  2. BDE, dbExpress, ODBC, .Net
  3. IBX, FIBPlus, FireDAC
  4. Transactions management in applications: examples
  5. How to manage transactions lifetime in various drivers
  6. How to implement edit dialogs in the effective and safe way
  7. Commit retaining

 8.     Diagnosing transaction management problems: most prevalent problems, how to catch and fix them.

  1. What we can see at gstat -h
  2. OIT, OST, OAT, NEXT — their combinations and what they mean
  3. When garbage collection does not work?
  4. Transaction markers dynamics analysis with IBTM. Catching sweep moments.
  5. How to determine quantity of garbage versions
  6. How to find long transactions with MON$ tables
  7. Transactions monitoring with MON$ and TraceAPI.
  8. Legacy applications: workarounds for error in transactions management

9.    Round table: questions and answers