ACID are 4 properties of database transactions. A database transaction may contain multiple read / write operations.
ACID makes sense when there are multiple transactions happening at the same time.
- Atomicity = Is a transaction everything-or-nothing?
- Consistency = How up-to-date is the data?
- Isolation = How independent are the operations?
- Dirty reads = non-committed data will be read
- Non-repeatable reads = two selects in one transaction return different data as another transaction committed an update
- Phantom reads = two range selects in one transaction return different rows as another transaction added new rows
- (Highest level) Serializable = read-lock + write-lock + range-lock
- Repeatable reads = read-lock + write-lock, phantom reads may happen
- Read committed = write-lock, non-repeatable reads may happen
- Read uncommitted = no locks, dirty reads may happen