Skip to main content
RocksDB provides transaction support with snapshot isolation, enabling atomic, consistent, isolated, and durable (ACID) operations. This guide covers both pessimistic and optimistic transaction implementations.

Transaction Types

RocksDB offers two transaction implementations:

TransactionDB (Pessimistic)

  • Uses locks to prevent conflicts
  • Better for write-heavy workloads
  • Detects conflicts immediately

OptimisticTransactionDB

  • Lock-free, checks conflicts at commit
  • Better for low-contention workloads
  • Lower overhead

Pessimistic Transactions

Opening a TransactionDB

Basic Transaction Operations

1

Begin transaction

Create a new transaction object.
2

Perform operations

Execute reads and writes within the transaction.
3

Commit or rollback

Apply changes atomically or discard them.
Example:

Conflict Detection

Pessimistic transactions use locks to prevent conflicts:
Writes outside of a transaction will block if a transaction holds a lock on the same key.

Snapshot Isolation

Read Committed

By default, transactions use “Read Committed” isolation:

Repeatable Read (Snapshot Isolation)

Use snapshots for stronger isolation guarantees:
Use set_snapshot = true when you need consistent reads across multiple operations in a transaction.

Advanced Features

Save Points

Save points allow partial rollback within a transaction:

GetForUpdate

Read and lock a key in a single operation:

Optimistic Transactions

Opening an OptimisticTransactionDB

Optimistic Transaction Example

Optimistic transactions detect conflicts only at commit time. The commit will fail with Status::Busy() if a conflict is detected.

When to Use Optimistic Transactions

  • Low contention on keys
  • Read-heavy workloads
  • Short transactions
  • Want lower overhead

Complete Examples

Transaction Options

Best Practices

1

Keep transactions short

Long-running transactions can block other operations and increase memory usage.
2

Use appropriate isolation level

Choose between Read Committed and Snapshot Isolation based on your consistency requirements.
3

Handle conflicts gracefully

Always check return status and retry transactions on conflicts when appropriate.
4

Clean up transaction objects

Always delete transaction objects after commit or rollback to free resources.

Next Steps

Basic Operations

Learn fundamental CRUD operations

Iterators

Scan and iterate through transactional data