并发控制技术

事物的隔离性实现主要依赖于多种并发控制技术,这些技术确保在并发执行的事物中,一个事物的操作不会被其他事物干扰。并发控制技术按照其对可能冲突的操作采取的不同策略可以分为乐观并发控制和悲观并发控制两大类。

基于封锁的并发控制

对于并发可能冲突的操作,比如读-写,写-读,写-写,通过共享锁和排他锁使它们互斥执行,分别用于控制对数据的读取和修改的操作。

基于锁的并发控制流程:事务根据自己对数据项进行的操作类型申请相应的锁(读申请共享锁,写申请排他锁)。申请锁的请求被发送给锁管理器,锁管理器根据当前数据项是否已经有锁以及申请的和持有的锁是否冲突决定是否为该请求授予锁。若锁被授予,则申请锁的事务可以继续执行,若被拒绝,则申请锁的事务将进行等待,直到锁被其他事务释放。

可能出现的问题

死锁:多个事务持有锁并互相循环等待其他事务的锁导致所有事务都无法继续执行。

饥饿:数据项A一直被加共享锁,导致事务一直无法获取A的排他锁。

对于可能发生冲突的并发操作,锁使它们由并行变为串行执行,是一种悲观的并发控制。

基于时间戳的并发控制

对于并发可能冲突的操作,基于时间戳排序规则选定某事务继续执行,其他事务回滚。系统会在每个事务开始时赋予其一个时间戳,这个时间戳可以是系统时间也可以是一个不断累加的计数器值,当事务回滚时会为其赋予一个新的时间戳,先开始的事务时间戳小于后开始事务的时间戳。

时间戳排序规则:假设事务T发出read(Q),T的时间戳为TS。若TS(T)<W-timestamp(Q),则T需要读入的Q已被覆盖。此read操作将被拒绝,T回滚。若TS(T)>

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MVCC(Multi-Version Concurrency Control)是一种并发控制技术,主要用于数据库管理系统中处理并发事务的冲突。MVCC允许事务在读取数据时不会被其他事务修改,从而实现了更高的并发性和隔离级别。 在MVCC中,每个事务操作的数据都有多个版本。当一个事务开始时,它会创建一个事务开始时间戳,并且只能看到在该时间戳之前提交的数据版本。而其他事务对同一数据进行修改时,会创建新的数据版本,并将其与修改事务的开始时间戳关联。 基于MVCC的并发控制可以通过以下方式实现: 1. 读操作:在读取数据时,事务只能看到早于其开始时间戳的已提交版本。这样可以避免脏读和不可重复读的问题。 2. 写操作:当一个事务进行写操作时,会创建一个新的数据版本,并将其与该事务的开始时间戳关联。其他事务在该事务提交之前只能看到旧版本的数据。 3. 事务隔离级别:MVCC可以支持不同的事务隔离级别,如读未提交、读已提交、可重复读和串行化。这些隔离级别可以根据应用程序的需求进行配置。 MVCC的优点是能够提供更高的并发性和隔离级别,减少了锁的冲突和等待时间。然而,它也会增加存储空间的开销,因为每个数据版本都需要保存。此外,MVCC可能导致长事务持有过多的旧版本数据,增加了垃圾回收的复杂性。 总的来说,MVCC是一种强大的并发控制技术,可以提高并发性和隔离级别,但需要权衡存储空间和垃圾回收的开销。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骆驼整理说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值