DEV Community

Cover image for Implementation of ACID transaction in Database
Jaimin Bariya
Jaimin Bariya

Posted on • Edited on

1 1 1 1 1

Implementation of ACID transaction in Database

Databases implement ACID transactions using a combination of techniques designed to ensure atomicity, consistency, isolation, and durability. Here's how they achieve each component:


Techniques for Implementing ACID Transactions

1. Atomicity

Ensures that a transaction is "all or nothing." Either all operations succeed, or none are applied.

Techniques:

  • Transaction Logs (Write-Ahead Logging):
    • Changes are first written to a log before being applied to the database. If the transaction fails, the log is used to roll back incomplete operations.
    • Example: PostgreSQL uses a Write-Ahead Log (WAL).
  • Rollback Mechanism:
    • Keeps a record of the previous state of data to undo changes if the transaction fails.
    • Example: MySQL’s InnoDB engine uses undo logs.

2. Consistency

Ensures that a transaction moves the database from one valid state to another, maintaining all rules and constraints.

Techniques:

  • Database Constraints:
    • Enforcing rules like primary keys, foreign keys, and check constraints ensures that transactions don't violate data integrity.
    • Example: Ensuring a foreign key references an existing record.
  • Trigger Mechanisms:
    • Custom business rules are enforced using triggers to validate data during a transaction.
    • Example: Ensuring inventory is sufficient before deducting stock during an order.

3. Isolation

Ensures that transactions execute independently without interfering with each other.

Techniques:

  • Locks:
    • Row-level Locks: Only the rows involved in the transaction are locked, reducing contention.
    • Table-level Locks: Entire tables are locked, typically in older systems or for large operations.
    • Example: MySQL and PostgreSQL support row-level locking.
  • Multiversion Concurrency Control (MVCC):
    • Instead of locking, transactions access snapshots of the database, ensuring consistency while allowing concurrency.
    • Example: PostgreSQL and Oracle implement MVCC.
  • Isolation Levels:
    • Configurable levels such as Read Uncommitted, Read Committed, Repeatable Read, and Serializable control how much isolation is enforced.

4. Durability

Ensures that once a transaction is committed, its changes are permanent, even in case of power loss or system crashes.

Techniques:

  • Transaction Logs:
    • Changes are logged before committing, ensuring recovery from system crashes.
  • Checkpointing:
    • Periodically writes in-memory data and logs to disk to reduce recovery time in case of failure.
  • Write-Ahead Logging (WAL):
    • Ensures all changes are safely written to persistent storage before marking a transaction as committed.
    • Example: WAL is standard in most modern databases, like PostgreSQL.
  • Replication and Backup Systems:
    • Replicating data across multiple nodes or maintaining backups ensures durability in distributed systems.

Combining Techniques in Real-World Databases

  1. MySQL (InnoDB Engine):

    • Uses undo logs for atomicity.
    • Supports row-level locking and MVCC for isolation.
    • Implements WAL and binary logs for durability.
  2. PostgreSQL:

    • Implements MVCC for isolation.
    • Uses Write-Ahead Logging for durability.
    • Enforces constraints for consistency.
  3. Oracle Database:

    • Uses rollback segments for atomicity.
    • Implements sophisticated locking and MVCC mechanisms.
    • Provides extensive recovery options for durability.
  4. SQL Server:

    • Employs transaction logs for atomicity and durability.
    • Implements snapshot isolation (MVCC-like) for concurrency.
    • Uses constraints and triggers for consistency.


Hey, My name is Jaimin Baria AKA Cloud Boy..., If you have enjoyed and learned something useful, like this post, add a comment, and visit my Awesome SQL Interview GitHub repo.

Don't forget to give it a start 😅.

Happy Coding 🧑‍💻


Other Posts


Image of Datadog

The Essential Toolkit for Front-end Developers

Take a user-centric approach to front-end monitoring that evolves alongside increasingly complex frameworks and single-page applications.

Get The Kit

Top comments (0)

The best way to debug slow web pages cover image

The best way to debug slow web pages

Tools like Page Speed Insights and Google Lighthouse are great for providing advice for front end performance issues. But what these tools can’t do, is evaluate performance across your entire stack of distributed services and applications.

Watch video

Retry later