Concurrency control protocols ensure transactions executed simultaneously in a database system uphold the ACID properties of atomicity, consistency, isolation, and durability. There are two main categories of concurrency control protocols: lock-based and timestamp-based. Lock-based protocols use shared and exclusive locks to control access to data, following a two-phase locking protocol where locks are acquired in a growing phase and released in a shrinking phase. Timestamp-based protocols order transactions based on assigned timestamps to determine a serializable execution schedule.