并发锁

作者: 倔强的泥鳅的 | 来源:发表于2017-09-07 09:30 被阅读0次

在数据库中,并发控制是指在多个用户/进程线程同时对数据库进行操作时,如何保证事务的一致性

和隔离性的,同时最大程度地并发。

当多个用户/进程/线程同时对数据库进行操作时,会出现3种冲突情形:

1.读-读,不存在任何问题

2.读-写,有隔离性问题,可能遇到脏读(会读到未提交的数据),幻影读等。

3.写写,可能丢失更新

要解决冲突,一种办法是是锁,即基于锁的并发控制,比如2PL,这种方式开销比较高,而且无法

避免死锁。

多版本并发控制(MVCC )是一种用来解决读写冲突的无锁并发控制,也就是为事务分配单向增长

的时间戳,为每个修改保存一个版本,版本与事务时间戳关联,读操作只读该事务开始前的数据库

的快照。这样在读操作不用阻塞写操作,写操作不用阻塞读操作的同时,避免了脏读和不可重复读

乐观并发控制(OCC )是一种用来解决写写冲突的无锁并发控制,认为事务间争用没有那么多,所

以先进行修改,在提交事务前,检查一下事务开始后,有没有新提交改变,如果没有就提交,如果

有就放弃并重试。乐观并发控制类似自选锁。乐观并发控制适用于低数据争用,写冲突比较少的环

境。

多版本并发控制可以结合基于锁的并发控制来解决写写冲突,即MVCC+2PL,也可以结合乐观并

发控制来解决写-写冲突。

相关文章

  • 锁的详解

    1、Oracle锁类型 锁的作用:保护数据、并发(Oracle 可以并发,因为有锁;因为有锁,限制并发) la...

  • java并发

    1.并发编程中的锁 并发编程中的各种锁java高并发锁的3种实现Java并发机制及锁的实现原理 2.线程池核心线程...

  • 乐观锁与悲观锁

    乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段 悲观并发控制(悲观锁) 它可以阻止一个...

  • MySQL白菜教程(Level 10 - 共享锁&排他锁)

    共享锁和排它锁(Shared and Exclusive Locks) 并发控制提到共享锁和排它锁就不得不提并发控...

  • Mysql锁有哪些,如何理解 --- 2021-09-14

    按锁的粒度分: 行锁,锁某行数据,锁粒度最小,并发度高 表锁,锁整张表,锁粒度最大,并发低 间隙锁,锁的是一个区间...

  • java锁的概念

    参考文档探究分布式并发锁并发编程-锁的发展和主流分布式锁比较总结从构建分布式秒杀系统聊聊分布式锁探索并发编程(六)...

  • Go控制程序生命周期

    近期学了go语言的并发编程,掌握了 并发原语-原子锁,互斥锁,通道 并发原理 并发设计模式今天我们就来锻炼一下,如...

  • 你应该了解的MySQL锁分类

    MySQL中的锁 锁是为了解决并发环境下资源竞争的手段,其中乐观并发控制,悲观并发控制和多版本并发控制是数据库并发...

  • ElasticSearch 7.x 实战入门06

    本节的主要内容:ES的乐观锁并发控制原理以及模拟过程 1、ES的乐观锁并发控制 1.1、悲观锁与乐观锁 悲观锁的优...

  • 64_数据建模实战_基于全局锁实现悲观锁并发控制

    64_数据建模实战_基于全局锁实现悲观锁并发控制 1、悲观锁的简要说明 基于version的乐观锁并发控制 在数据...

网友评论

      本文标题:并发锁

      本文链接:https://www.haomeiwen.com/subject/xhwbjxtx.html