ACID PROPERTIES
Tags: database, relationaldatabase, mysql, postgres
Published: 2024-03-14 12:17:09

ACID is an acronym that stands for Atomicity, Consistency, Isolation, and Durability, and these are the four key properties of a transaction in SQL. These properties are required for any SQL transaction and guarantee the reliability of database transactions. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eyrwozs01kn5mpw2kar1.png)

**Atomicity:**

we mean that either the entire transaction takes place at once or doesn’t happen at all. In other words the transaction will happen or not. Not any middle state between these two.

It involves the following two operations-
**—Abort**: If a transaction aborts, changes made to the database are not visible. 
**—Commit**: If a transaction commits, changes made are visible. 

Consider the following transaction T consisting of T1 and T2: Transfer of 100 from account X to account Y.  

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l2k1gud6vsi32iid248a.png
)

**Consistency:**

This means that integrity constraints must be maintained so that the database is consistent before and after the transaction. It refers to the correctness of a database. Referring to the example above, 
The total amount before and after the transaction must be maintained. 
Total before **T** occurs = **500 + 200 = 700**. 
Total after **T** occurs = **400 + 300 = 700**. 
Therefore, the database is consistent. Inconsistency occurs in case **T1** completes but **T2** fails. As a result, **T** is incomplete. 

**Isolation:**

This property ensures that multiple transactions can occur concurrently without leading to the inconsistency of the database state.

Let X= 500, Y = 500. 
Consider two transactions T and T”. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xg8qn7lka1rzao8vuka2.png)

Suppose T has been executed till Read (Y) and then T’’ starts. As a result, interleaving of operations takes place due to which T’’ reads the correct value of X but the incorrect value of Y and sum computed by 
T’’: (X+Y = 50, 000+500=50, 500) 
is thus not consistent with the sum at end of the transaction: 
T: (X+Y = 50, 000 + 450 = 50, 450). 
This results in database inconsistency, due to a loss of 50 units. Hence, transactions must take place in isolation and changes should be visible only after they have been made to the main memory. 

**Durability:**

This property ensures that once the transaction has completed execution, the updates and modifications to the database are stored in and written to disk and they persist even if a system failure occurs. These updates now become permanent and are stored in non-volatile memory. The effects of the transaction, thus, are never lost. 

**Advantages of ACID Properties in DBMS:**

1. **Data Consistency:** ACID properties ensure that the data remains consistent and accurate after any transaction execution.
2. **Data Integrity:** ACID properties maintain the integrity of the data by ensuring that any changes to the database are permanent and cannot be lost.
3. **Concurrency Control:** ACID properties help to manage multiple transactions occurring concurrently by preventing interference between them.
4. **Recovery:** ACID properties ensure that in case of any failure or crash, the system can recover the data up to the point of failure or crash.

**Disadvantages of ACID Properties in DBMS:**

1. **Performance:** The ACID properties can cause a performance overhead in the system, as they require additional processing to ensure data consistency and integrity.
2. **Scalability:** The ACID properties may cause scalability issues in large distributed systems where multiple transactions occur concurrently.
3. **Complexity:** Implementing the ACID properties can increase the complexity of the system and require significant expertise and resources. Overall, the advantages of ACID properties in DBMS outweigh the disadvantages. They provide a reliable and consistent approach to data
4. management, ensuring data integrity, accuracy, and reliability. However, in some cases, the overhead of implementing ACID properties can cause performance and scalability issues. Therefore, it’s important to balance the benefits of ACID properties against the specific needs and requirements of the system.