Transaction processing

Transaction

  • Finite ordered set of operations (workflow)
  • Properties (ensured by transactions)
  • Integrity (ensure data integrity)
  • Fail Safety (immune to system failures)
  • Interface contract: Start / Commit / Rollback
  • Properties (ACID)
  • Atomicity
  • Consistency
  • Isolation
  • Durability

ACID: Atomicity

  • Transaction is executed completely or not at all.
  • Uninterruptible single operation
  • All effects materialized (only on commit)
  • Problem: Dirty Read
  • Read uncommitted changes of another transaction
  • T1 writes, T2 reads, T1 rollback

ACID: Consistency

  • Transaction lead from one consistent state to another.
  • Integrity constraints always valid
  • Integrity may be violated during transaction
  • Transactions without consistency: Abort
  • Problem: Inconsistent read problem (with no isolation)
  • Intertwinted write and read records
  • T1 writes, T2 reads and writes, T1 reads inconsistent data

ACID: Isolation

  • Transactions do not interfere with each other.
  • Effect always the same (execution alone)
  • Read only consistent data
  • Problem: Lost update
  • Concurrent write lead to information loss
  • Problem: Non-reproducible read / Phantom problem
  • Reading same data item in one transaction -> different values
  • T1 reads, T2 writes, T1 reads again -> Problem

ACID: Durability

  • After a commit all changes are guaranteed to survive system failures.
  • Written on disk / recovery measures
  • Incomplete transactions must survive crash
  • Problem: System crash
  • After commit: Everything written to disk

Page Model

  • Operations on page level (read/write)
  • Performed in buffer
  • Write operation indivisible
  • Definition: Transaction is totally-ordered finite sequence of actions r(x) or w(x) where x is a record of a database instance.
  • Note
  • Relaxation to partial order possible (if effect is unchanged)
  • Order necessary: Two ops, same item

Transaction Manager

  • Task: Concurrency control
  • Concurrent transactions -> Potential problems
  • Gets transactions from users/apps
  • —Image 36—

Schedule

  • Schedule/history: Sequence of operations (all and only operations of transactions)
  • Serial schedule: Permutation exists, where transactions occur one after another
  • Serial schedule
  • no concurrency problem
  • No performance
  • Ensuring atomicity, consistency, isolation
  • Goal: Find safe schedules fast
  • Problem: Different transaction, same data item

Final state equivalent

  • Equivalence two schedules:
  • Same set operations
  • Final state equivalence (same instance after execution)

Schedule serializability

  • Serializable schedule:
  • It exists an equivalent serial schedule
  • Advantage: Same effect, concurrent execution
  • Test for serializability
  • NP-complete
  • O(#TA!)

Schedule classes

  • —Image—

Conflict serializability

  • Conflict serializable schedule
  • It exists a conflict equivalent serial schedule
  • Test for conflict equivalence: Conflict graph
  • Example non-conflict serializable schedule: Lost update problem
  • Good correctness criterion
  • No commits/rollbacks -> Dirty read possible
  • Commit serializability necessary

Conflict equivalence

  • Conflicting operations
  • Access same data item
  • At least one write
  • Conflict relation: All pairs of conflicting operations (remove aborted)
  • Conflict equivalence two schedules
  • Same set operations
  • Same conflict relation
  • Or: Identical conflict graphs

Conflict serializability: Conflict graph

  • Goal: Check for conflict equivalence
  • Nodes: All committed transactions
  • Edge (t1, t2) iff conflicting pair (p, q) with p in t1 and q in t2
  • — Example 51—
  • Non-conflict serializable schedule: Cyclic
  • —Image 52—
  • Theorem:
  • Schedule is conflict serializable iff conflict graph is acyclic
  • Major advantage: Finding cycle ein O(n^k)

Scheduler

  • Transaction manager: Give operations to scheduler
  • Concerns: Isolation + Consistency
  • Scheduler:
  • List of transactions: Active, commited, aborted
  • Accept transactions / operations
  • Decide to abort (if non-serializable)
  • Per transaction:
  • Output operation to storage manager: Active
  • Reject operation: Abort
  • Block operation: Waiting

Locking Scheduler

  • Largest class of schedulers
  • Set / remove locks on data items
  • Lock
  • Atomic
  • Lock granularity (record, page, etc…)
  • Lock is set: Item not available to other transactions
  • Lock conflict:
  • Scheduler checks requested locks
  • Requesting transaction blocked
  • Legal schedule
  • Item locked before access
  • All locks released
  • No unnecessary locks

Lock modes

  • Lock types:
  • Read locks / shared locks
  • Write locks / exclusive locks
  • Lock conversion
  • Upgrade read lock to write lock
  • Unlock concurrent shared locks

Two-Phase Locking Protocol

  • Generate subset of conflict-serializable schedule
  • Prominent: Two-Phase Locking (2PL)
  • Growing phase
  • Shrinking phase
  • Growing phase:
  • Abort transactions (usually)
  • Lost amount of work small
  • Shrinking phase:
  • Write data physically (transaction can commit)
  • Weak points
  • Conflicts
  • Two transactions competing fo the same lock
  • Abort in shrinking
  • T1 releases, T2 acquires, T1 rolled back (T2 also, cascading rollback)
  • Variants:
  • Conservative locking
  • Strict two-phase locking
Two-Phase Locking Protocol: Variants
  • Conservative locking / static locking
  • Pessimistic approach
  • Acquire all locks before first operation
  • Restricts concurrency
  • Improves commit changes
  • Strong strict two-phase locking (SS2PL)
  • Hold lock until commit
  • Output: Strict and cascade less schedules
  • Easy to recover
  • No cascading rollbacks
  • Avoid dirty reads

Deadlocks

  • Deadlock: Transactions mutually wait for each other
  • Criteria
  • Mutual exclusion (resource cannot be shared)
  • Hold-and-wait (Thread holds resource)
  • No preemption (resource only released voluntarily)
  • Circular wait (wait-for-graph)
  • Handle deadlocks
  • Ignore (easy)
  • Detection (allow, detect, resolve)
  • Prevention (ensure criteria not fulfilled)
  • Avoidance (prevent unsafe situations)

Deadlocks: Ignore

  • „Ostrich algorithm“
  • Reasonable
  • Deadlock occurs rarely
  • Expensive to prevent
  • Not good for critical database system

Deadlocks: Detection

  • Waiting-For-Graph
  • Vertex: Transaction
  • Edge: Waiting-For-Relation
  • Deadlock: Cycle
  • Detect cycle in O(n^2) or Floyd-Warshall algorithm
  • When to test?
  • Continuously: Immediately after transaction inserted (expensive)
  • Periodic: Time cycle (time interval decision critical)

Deadlocks: Resolving

  • Usually abort last transaction
  • Victim selection
  • Last blocked (causing transaction)
  • Random
  • Youngest (abort which started most recently, minimize wasted work)
  • Minimum locks (transaction with fewest locks, minimize wasted work)
  • Minimum work (abort with least amount of work, CPU, I/O)
  • Most cycles (abort transaction with most cycles)
  • Most edges (abort transaction with most edges)

Deadlocks: Livelocks

  • Starvation
  • Repeatedly eliminating the same transaction => will never finish
  • Solution: Choose another (priorities)
  • Example without deadlock:
  • Transaction waits for a lock but never receives it

Deadlocks: Prevention

  • Techniques
  • Wait and die
  • Wound and wait
  • Immediate restart (restart conflicting transaction immediately)
  • Running priority (abort old transaction, give locks to new one)
  • Timeout
  • Wait-and-die
  • Use timestamps
  • Older transaction => higher priority
  • Old TX waits for young TX
  • Young TX dies
  • Wound-and-wait
  • Old TX restarts young TX (wound)
  • Younger TX waits
  • Timeout
  • Start timer after blocking
  • Timeout => deadlock => termination

Deadlocks: Avoidance

  • Simulation and trajectories
  • Avoid unsafe states
  • Change scheduler for potential unsafe states
  • Example: Banker’s algorithm
  • Expensive, rarely used
  • —Image 22—

Altruistic Locking

  • Disadvantage 2PL
  • Long-running transaction => many short-lived locks => unnecessary
  • Solution: Altruistic locking (return not-used locks)
  • Idea: Short transactions needing a subset of locks of long transaction for obtaining
  • Transaction donates lock (tell scheduler)
  • 2PL: Donated lock <> unlocked
  • Stay-in-wake-rule: Ensure consistency (avoid lost update)

Altruistic Locking: Wake / Dept

  • Being in the wake:
  • Operation in the wake of Ti when item is donated by Ti
  • Transaction Tj is in wake of Ti if one operation is in the wake of Ti
  • Transaction Tj is completely in the wake of Ti if all operation are in the wake of Ti
  • Being indebted:
  • Transaction Tj is indebted to Ti if Tj get lock of Ti and there is a conflict between them

Altruistic Locking: Rollback

  • Transaction must roll back -> All transaction in the wake must roll back (Cascading roll-back)
  • Very expensive

Altruistic Locking: Rules

  • Conflicting locks may not be hold simultaneously (either unlock or donate)
  • Once lock is donated -> Data item cant be accessed again
  • Transaction acquiring lock must unlock
  • Tj indebted to Ti, it must remain completely in wake to Ti (until unlocking)

Predicate Locking

  • Lock semantic entities
  • Idea: Dont lock table, lock subset of table referring to predicate
  • Intensional locking (on WHERE Statement)
  • Currently not supported
  • Locking:
  • Conditions form hyperplane (all values satisfying condition)
  • Lock includes non-existing records
  • Predicate conditions define which records to lock
  • Lock mode; shared/exclusive
  • Compatible locks
  • Both shared
  • No intersection of hyperplane
  • Compatibility test
  • Lock requests reaches scheduler
  • Expensive: NP-complete

Non-Locking Schedulers

  • Serialize transaction without locking
  • Timestamp ordering
  • Serialization graph testing
  • Optimistic protocols
  • Less efficient
  • Aborting transactions
  • Suitable for distributed systems (distributed locks difficult)

Non-Locking Schedulers: Timestamp ordering

  • Annotate transaction with timestamp (monotonically increasing)
  • Operations of transaction inherit timestamp
  • Order conflicting ops by timestamp
  • Timestamp ordering rule
  • pi(x) is executed before qj(x) iff ts(ti) < ts(tj)
  • Transaction too late -> abort
  • Pessimistic
  • Performance decrease
  • Timestamps for each data item
  • max-r-scheduled(x)
  • max-w-scheduled(x)
  • Transaction arrives
  • Compare to max-q-schedule for conflict operations q

Non-Locking Schedulers: Serialization graph

  • Idea: Dynamically maintain conflict graphs + check for cycle
  • Extend graph before performing operations
  • Abort transaction responsible for cycle
  • -> Deadlock avoidance
  • Impractical for real apps
  • O(#TA^2)
  • Continuous detection expensive

Non-Locking Schedulers: Optimistic protocol

  • Assumption: Probably no conflict will happen anyway
  • Pessimistic: Conflicts happen often, Immediately detect and resolve conflicts
  • Three phases
  • Read phase
    • Just execute action, isolated copy for writing
  • Validate phase
    • Transaction wants to commit
    • Validate execution (conflict serialization, order of conflicting operations)
    • Backward-oriented: Watch all transactions that are committed
    • Forward-oriented: Watch all transactions in read phase
  • Write phase
    • Write isolated copy to DB

Locking Protocols

  • —Image 49—

Lock Implementation

  • Commercial systems: S2PL
  • Flexibility
  • Robustness
  • Locker Manager’s Task: Bookkeeping
  • Check granted locks
  • Release locks at one
  • Resume transactions with lock conflicts
  • Checking/releasing/resuming
  • In-memory structure required
  • Single-key hash tables
  • Map abstract resource to concrete resource (RCB)

Lock Implementation: Blocks

  • Resource Control Blocks
  • Represent page, records, index entries
  • Linked together for the same value
  • Lock Control Block
  • Important: Shared locks simultaneously hold
  • Bookkeeping: List of LCBs
  • Ordered by arrival time
  • Avoid starvation: Shared locks don’t pass queued exclusive locks
  • Transaction Control Block
  • For releasing: Identify LCBs for transaction
  • Per transaction
  • Traverse LCBs and remove from RCB
  • Check RCBs for resuming
  • —Image 55—

Lock Implementation: Granularity

  • Lock granularity -> changes number of RCBs and LCBs
  • Multiple lock granularity (different granularities)
  • Detect conflicts: Intention locks
  • Intention locks
  • Coarse lock desired -> set intention locks to all smaller granularities
  • Before granting coarse lock: Small locks must be granted
  • Lock escalation (transaction not sure how much locks)
  • Convert fine-grained locks to coarse lock
  • Grant coarse lock -> Release fine-grained lock
  • Commercial system triggers lock escalation

Isolation Levels

  • Relaxation from S2PL
  • Control locks on application / transaction level
  • Locking style operation: Isolation level
  • Isolation levels
  • Read uncommitted (dirty-read level)
  • Write locks acquired/released by S2PL
  • Dirty read possible (ok for statistical apps)
  • Read committed (cursor stability level)
  • Write locks acquired/released by S2PL
  • Read locks are held duration read
  • Long periods between waits: Lost update
  • Serializable (CRS)
  • Avoid long-running transactions (User-dialog performance killer)
  • Transaction chopping
  • Application responsible

MPL

  • Concurrency increases throughput
  • Data contention: Transactions compete for locks
  • Data contention thrashing: Waiting time increases
  • Deadlocks: CPU / disk contention (restarted transaction)
  • -> Multiprogramming level: Max. Number of concurrent transactions
  • MPL Tuning
  • Short, frequent transactions, mostly read -> High MPL
  • Long transactions -> Low MPL
  • Transactions always same records: Low MPL
  • Variability query length (constant->high MPL, varying->low MPL)
  • MPL per transaction class
  • Dynamic MPL
  • Conflict ratio below: Admit immediately
  • Surpass: Admission control
  • Conflict ratio
  • Homogenous workload: Fraction of blocked transactions (~25%)
  • Inhomogenous workload: #LocksHeld / #LockHeldByNonBlockedT

Transaction Recovery

  • Concerns atomicity + durability
  • Complete entirely or not (rollback)
  • Committed transaction -> persistent
  • Protect against hardware crash + failures
  • Aborted transaction
  • Undo all changes (not enforced by serializability)

System Crash: Soft crash

  • Database server down
  • Stable data survives (probably inconsistent)
  • Soft crash recovery
  • Return to last consistent state
  • Redo interrupted transactions
  • Cause
  • Human-cause (admin)
  • Software failure (OS/DBMS/Bugs)
  • Power failure

System Crash: Hard crash

  • Corrupt secondary storage
  • Measure
  • N-Plex systems
  • Emergency Backup System (UPS)
  • Parity system
  • Hard crash recovery
  • Rebuild storage
  • Perform soft crash recovery
  • Causes
  • Environment (fire, flood, sabotage)
  • Operation (admin)
  • Maintenance (repair facility)
  • Hardware
  • Software
  • Process (strike, panic)
  • Cyber Attack (malware)

System Crash: N-Plex system

  • Redundant approach
  • Similar systems parallel (geographically distributed)
  • Tasks performed by all
  • Voting result -> Detect faulty systems
  • No consensus -> repeat
  • Basic vs. recursive failsafe N-plex vs. Version N-plex

Recovery concepts

Log / error type

  • System crash: Transaction state lost
  • Concern: Physical database correct state?
  • Problem: Which part of transaction executed/which not?
  • Error type
  • Local error in transaction (rollback by user)
  • Error with volatile memory loss (power outage)
  • Error with stable memory loss (hardware failure)
  • Log File
  • Undo-log: Old values (before write, for rollback)
  • Redo-log: New values (after write, for re-applying)
  • System checkpoint (special log entry)
  • Write committed write-ops to disk
  • Periodically
  • Method: Hold transactions, force-write data + log, resume

Recovery concepts: Stealing, forcing, Images

  • Stealing policy
  • Page can be evicted by other transaction (intermediate results written)
  • Page pinned/dirty: Page modified
  • Flush page iff page dirty
  • Force policy
  • Write immediately or later
  • Before image (BFIM): Old value
  • After image (AFIM): New value
  • In-place updating
  • Overwrite original copy (only one copy)
  • Log necessary
  • Shadow paging
  • New item at different location
  • No log necessary (both images on disk)
  • Write-ahead logging (WAL): First write BFIM to UNDO, overwrite BFIM, not commit until REDO

Recovery components

  • DB page: Stable content of DB
  • DB cache: Excerpt stable DB (operations, explicitly flush to DB)
  • Stable log (log entry for uncommitted write operation)
  • Log buffer
  • —Image 25—

Recovery without logs

  • Shadow paging (No-undo/no-redo, force/no-steal)
  • Idea
  • Store AFIM and BFIM of disk
  • Two page tables during transaction (current, shadow)
  • Workflow
  • Shadow PT never changed (+non-volatile)
  • Read/write on current PT (AFIM separate copy)
  • Rollback: Delete current PT + AFIM
  • Commit: Force-write current PT to shadow PT
  • Advantage
  • Avoid logging overhead
  • Recovery fast (everything written)
  • Disadvantage
  • Commit overhead: Lot of writes
  • Fragmented data (maintain indexes?)
  • Garbage collection overhead

Recovery with logs

  • Two techniques
  • Deferred update
  • Write everything at commit point
  • No-force / No-steal
  • No-undo / redo
  • Immediate update
  • Write everything immediately
  • Force / steal
  • Undo / no-redo

Recovery with logs: Deferred updates

  • No-undo / redo + no-force/no-steal
  • Write at commit point
  • Write (during transaction) to private copy
  • Commit: First write to log, then to database
  • Rollback: Delete private copy
  • Possible: Redo committed changes (Crash between log and DB writing)
  • Advantage
  • No rollbacks necessary
  • No dirty read possible
  • Disadvantage:
  • Limits concurrency
  • Improvement: Only perform last write command

Recovery with logs: Immediate updates

  • Undo/no-redo + force/steal
  • Write directly
  • Read operation in undo log (cascading rollback -> avoid dirty read)
  • Rollback: Undo changes
  • S2PL: Commit ordering / being-in-the-wake
  • More general algorithm: undo/redo + no-force/steal
  • Undo effects of active transactions
  • Redo effect committed transaction (since checkpoint)

Recovery protocols

  • —Table 42—

ARIES

  • Algorithmus for Recovery and Isolation Exploiting Semantics
  • Summarized experiences (DB2/SysR)
  • Steal/no-force algorithms
  • Used by every database
  • Concepts
  • Write-ahead logging
  • Repeating history during redo: Bring system back to crash situation, Undo uncommitted transactions
  • Logging changes during undo
  • Analyze phase
  • Redo phase
  • Undo phase
  • Necessary information
  • Log
  • Transaction table
  • Dirty page table

ARIES: Data structure

  • Log record
  • Has log sequence number LSN
  • Page has latest LSN which changed page
  • Contains
  • previous LSN of transaction (chain)
  • Transaction ID
  • Type (write, commit, abort, undo, end)
  • Transaction table
  • One record pre active transaction
  • Store: TID, latest LSN, status
  • Dirty page table
  • Entry per modified page
  • Store: Page ID, earliest LSN

ARIES: Phases

  • Analyze phase
  • Scan log starting with latest checkout
  • Access transaction table
  • Remove transaction with „end“ log entry
  • Add logs to transactions if missing
  • Access dirty page table
  • Log modifies table -> add
  • Set correct LSN
  • Redo phase
  • Idea: Don’t redo already written changes (smallest LSN in dirty page table)
  • Redo operations (if necessary)
  • Result: Same state when crash happened
  • Undo phase
  • Undo set: Active transactions from analyze phase
  • Scan log backwards + undo changes
  • Write compensating log entry for each undo (recover crashes in this phase)

Catastrophic recovery

  • Single-media failure
  • Corrupted hard drive
  • Easily recoverable (RAID)
  • No interruption of operations but increased vulnerability
  • Multiple-media failure / catastrophic failure
  • Catastrophes: Fire, flood
  • Massive hardware failure
  • Human-caused damage
  • Virus infections
  • Remedy
  • Geographic N-Plexing: Highly available distributed storage
  • Backup: Backup whole database + logs (tertiary storage), Backup logs more often (smaller, easier)

Application Recovery

  • Scenario: Transaction correctly fails
  • Stateless application
  • Request-response
  • Queue requests (persistent)
  • Information user if fail
  • Stateful application
  • Problem: Long-running transactions (user input)
  • Idea: Break down to chained transactions
  • Queued conversational transactions
  • No real ACID (atomicity violated)
  • Queue response, user interaction, enqueue new request