编辑
2023-10-28
数据库理论基础
00
请注意,本文编写于 560 天前,最后修改于 560 天前,其中某些信息可能已经过时。

目录

基于2PL:
TO(Timestamp Ordering):
OCC(Optimistic Concurrency Control):
Basic TO(Basic Timestamp Ordering):
MVCC(Multiversion Concurrency Control):
MVTO(Multiversion Timestamp Ordering):
MVOCC(Multiversion Optimistic Concurrency Control):

基于2PL:

基于2PL的事务并发控制的基本工作原理:

Growing Phase(增长阶段):在这个阶段,事务可以获得锁,并且可以继续请求获取新的锁。当事务需要访问一个数据项时,它会请求获取相应的锁。如果锁已被其他事务持有,则当前事务会等待,直到锁被释放。

Shrinking Phase(缩减阶段):在这个阶段,事务不再获取新的锁,只释放已经持有的锁。一旦事务释放了锁,其他事务就有机会获取这些锁并继续执行。

基于2PL的事务并发控制遵循以下规则:

读操作(共享锁):事务可以获取共享锁(读锁)来读取数据项。多个事务可以同时持有共享锁,只要没有事务持有独占锁。 写操作(独占锁):事务需要获取独占锁(写锁)才能对数据项进行写操作。只有当没有其他事务持有共享锁或独占锁时,事务才能获取独占锁。 基于2PL的事务并发控制确保了事务的隔离性,因为事务在修改数据之前必须先获得独占锁。这防止了数据的不一致和并发冲突。然而,2PL也可能导致死锁的发生,即多个事务相互等待对方释放锁的情况。为了避免死锁,通常会使用死锁检测和解决机制,例如超时和死锁检测算法。

基于2PL的并发控制是传统数据库系统中常用的技术,并且在许多事务处理系统中得到广泛应用。然而,它也具有一些限制,例如锁竞争可能导致性能瓶颈,特别是在高并发环境下。因此,现代数据库系统也采用其他并发控制技术,如MVCC和OCC,以提高并发性能和效率。

TO(Timestamp Ordering):

TO是一种基于时间戳的并发控制协议,用于确定事务的执行顺序。每个事务被分配一个时间戳,根据时间戳的顺序来决定事务的执行顺序,确保并发执行的结果与某个串行执行的结果相同。

OCC(Optimistic Concurrency Control):

OCC是一种乐观的并发控制协议,它假设冲突很少发生,事务可以并发执行而无需加锁。在OCC中,事务在提交之前不会对数据进行加锁,而是在提交时检查是否存在冲突。如果发现冲突,则会回滚事务并重新执行。

Basic TO(Basic Timestamp Ordering):

Basic TO是TO协议的一种简单形式,它使用时间戳来确定事务的执行顺序。在Basic TO中,较早的时间戳对应的事务被认为是先发生的,而较晚的时间戳对应的事务必须等待。

MVCC(Multiversion Concurrency Control):

MVCC是一种并发控制技术,用于处理读-写冲突。在MVCC中,每个事务可以看到数据库中的多个版本(实例),每个版本都与特定的时间戳相关联。事务根据其时间戳来选择适当的版本进行读取,并且可以并发执行而不会产生读-写冲突。

MVTO(Multiversion Timestamp Ordering):

MVTO是一种基于多版本的时间戳排序的并发控制协议。与基本的TO协议不同,MVTO允许同时存在多个版本的数据项,每个版本都与特定的时间戳相关联。在MVTO中,事务根据其时间戳选择适当的数据版本进行读取,从而避免读-写冲突。如果一个事务要写入一个数据项,它会创建一个新的版本,并更新其时间戳,以确保新版本晚于其他事务的版本。这种方式可以提高并发性能,减少事务之间的冲突。https://mp.weixin.qq.com/s/Xb8k0H5eJPhC8n72L6KOIQ

MVOCC(Multiversion Optimistic Concurrency Control):

MVOCC是一种基于多版本的乐观并发控制协议。它结合了多版本数据和乐观并发控制的特点。在MVOCC中,事务在读取和写入数据时不会加锁。它使用多版本数据来处理读-写冲突,每个事务根据其时间戳选择适当的数据版本进行读取。在提交时,MVOCC会检查事务是否与其他事务产生了冲突。如果发现冲突,则会回滚事务并重新执行。通过减少锁的使用,MVOCC可以提高并发性能。

参考:https://zhuanlan.zhihu.com/p/168672853

https://mp.weixin.qq.com/s/zw0ASpVDGroZAfUrCban9A

https://mp.weixin.qq.com/s/Xb8k0H5eJPhC8n72L6KOIQ

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!