# Overview
An approach to [[Strong (or Serializable) Isolation]] where exclusive access to data is given to a read or write while the transaction is running:
- If transaction A has read an object and transaction B wants to write to that object, B must wait until A commits or aborts before it can continue. (This ensures that B can’t change the object unexpectedly behind A’s back.)
- If transaction A has written an object and transaction B wants to read that object, B must wait until A commits or aborts before it can continue.
# Key Considerations
Requires a [[predicate lock]] to enable full strong isolation. Many databases implement an alternative to a predicate lock, called an [[Index-Range Lock]].
# Pros
- Protects against all [[Race Conditions]]
# Cons
- Negative impact on performance
- Introduces [[deadlocks]]
# Use Cases
- [[mySQL]]
- [[MS SQL Server]]
# Related Topics
- 2PL is a type of [["pessimistic" concurrency control strategy]]