并发锁

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

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

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

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

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

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

    3.写写,可能丢失更新

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

    避免死锁。

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

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

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

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

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

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

    境。

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

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

    相关文章

      网友评论

          本文标题:并发锁

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