📜  并发控制技术

📅  最后修改于: 2021-09-09 10:19:16             🧑  作者: Mango

在数据库中提供并发控制以:

  • (i) 在事务之间强制隔离。
  • (ii) 通过保持事务执行的一致性来保持数据库的一致性。
  • (iii) 解决读写和读写冲突。

各种并发控制技术有:

1. Two-phase locking Protocol
2. Time stamp ordering Protocol
3. Multi version concurrency control
4. Validation concurrency control 

下面对这些进行简要说明。

1. 两阶段锁定协议:
锁定是一种保护:读取权限或写入数据项的权限的操作。两阶段锁定是一种用于在不产生死锁可能性的情况下获得共享资源所有权的过程。

两阶段更新算法中发生的 3 个活动是:

(i). Lock Acquisition
(ii). Modification of Data
(iii). Release Lock 

如果不可能在不等待另一个进程完成使用锁的情况下获取所需的所有资源,则两阶段锁定通过释放其已获取的所有资源来防止在分布式系统中发生死锁。这意味着任何进程都不会处于持有某些共享资源并等待另一个进程释放它所需的共享资源的状态。这意味着不会因资源争用而发生死锁。

两阶段锁定协议中的交易可以采用以下两个阶段之一:

  • (i) 成长阶段:
    在这个阶段,事务只能获取锁而不能释放任何锁。当一个事务获得它需要的所有锁时,这个点称为锁点。
  • (ii) 收缩阶段:
    在这个阶段,事务只能释放锁而不能获取任何锁。

2. 时间戳排序协议:
时间戳是可以附加到任何事务或任何数据项的标记,它表示以任何方式使用事务或数据项的特定时间。时间戳可以通过两种方式实现。一种是直接将时钟的当前值分配给事务或数据项。另一种方法是附加一个逻辑计数器的值,该值在需要新时间戳时保持递增。

数据项的时间戳可以有两种类型:

  • (i) W-timestamp(X):
    这意味着数据项 X 被写入的最晚时间。
  • (ii) R-timestamp(X):
    这意味着读取数据项 X 的最晚时间。每次对数据项 X 执行成功的读/写操作时,都会更新这 2 个时间戳。

3. 多版本并发控制:
多版本方案保留旧版本的数据项以增加并发性。

Multiversion 2 相位锁定:
每次成功写入都会创建新版本的写入数据项。时间戳用于标记版本。当发出 read(X) 操作时,根据事务的时间戳选择合适的 X 版本。

4.验证并发控制:
乐观方法基于大多数数据库操作不冲突的假设。乐观方法既不需要锁定也不需要时间戳技术。相反,事务在提交之前不受限制地执行。使用乐观方法,每个事务都经过 2 或 3 个阶段,称为读取、验证和写入。

  • (i)在读取阶段,事务读取数据库,执行所需的计算并对数据库值的私有副本进行更新。事务的所有更新操作都记录在一个临时更新文件中,其余事务不会访问该文件。
  • (ii)在验证阶段,对交易进行验证,以确保所做的更改不会影响数据库的完整性和一致性。如果验证测试是肯定的,则事务进入写入阶段。如果验证测试是否定的,则重新启动事务并丢弃更改。
  • (iii)在写入阶段,更改将永久应用于数据库。