并发控制(Concurrent Control)是指在多线程、多进程环境下,为了解决多个执行单元同时访问共享资源而产生的一系列问题,如数据不一致、死锁等,所采取的一系列管理机制和策略。其主要目的是保证数据的一致性和完整性,并提高系统资源的利用率。
在数据库系统中,常见的并发控制方法有:
封锁(Locking):通过为数据对象设置锁来防止多个事务同时修改同一数据,分为排它锁(Exclusive Lock,简称X锁)和共享锁(Shared Lock,简称S锁)。一个事务对数据加了排它锁后,其他事务既不能读也不能写;若加的是共享锁,则其他事务只能读不能写。
乐观并发控制(Optimistic Concurrency Control,OCC):假定并发事务在处理过程中很少发生冲突,只在事务提交前检查是否与其他事务冲突,通常用于数据竞争不激烈的情况。
时间戳并发控制(Timestamp Ordering,TO):为每个事务分配一个时间戳,按照时间戳顺序执行事务,如果某个事务的时间戳小于要修改的数据项的时间戳,则拒绝该事务。
多版本并发控制(Multi-Version Concurrency Control,MVCC):允许多个事务在同一时刻看到数据库的不同版本,从而避免了加锁操作,常用于现代的关系型数据库系统如MySQL的InnoDB引擎和PostgreSQL等。
此外,在分布式系统、操作系统以及计算机网络等领域,也会涉及到并发控制的问题,其核心都是为了在保证数据正确性的前提下,有效地协调并行执行的各个任务或进程对共享资源的访问。