DEV Community

Mohammed Azim J
Mohammed Azim J

Posted on

CA 37 – Durability (ACID)

This one is about Durability, means once data is saved (commit), it should not disappear even if system crashes.

First I checked initial data:

SELECT * FROM accounts;
Enter fullscreen mode Exit fullscreen mode

Alice -> 1000
Bob -> 500

Then I did a transfer:

BEGIN;

UPDATE accounts
SET balance = balance - 300
WHERE name = 'Alice';

UPDATE accounts
SET balance = balance + 300
WHERE name = 'Bob';

COMMIT;
Enter fullscreen mode Exit fullscreen mode

After commit I checked again:

SELECT * FROM accounts;
Enter fullscreen mode Exit fullscreen mode

Alice -> 700
Bob -> 800

So transfer done.

Now imagine system crash or restart. After reconnecting I ran same query again:

SELECT * FROM accounts;
Enter fullscreen mode Exit fullscreen mode

Still:
Alice -> 700
Bob -> 800

So data is not lost. That is durability.

Then I thought what if crash happens before commit → changes not saved.
If crash happens after commit → data stays safe.

So database makes sure once COMMIT happens, data is stored properly (in disk/logs).

So simple idea:

Before commit → not permanent
After commit → permanent

That is durability, even crash also cannot remove committed data.

Top comments (0)