百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> 乐观锁悲观锁的定义
分享文章到:

乐观锁悲观锁的定义

发布时间:09/01 来源:未知 浏览: 关键词:

悲不雅锁,正如其名,具有热烈的独占和排他特性,它指的是对数据被外界修改持保守态度。悲观锁机制采取了愈加宽松的加锁机制,悲观锁是相对悲不雅锁而言,也是为了不数据库幻读、业务处置时间过长等缘由引发数据处置错误的一种机制。

悲观锁( Optimistic Locking )

悲观锁是相对悲不雅锁而言的,悲观锁假设数据一样状况下不会造成冲突,所以在数据停止提交更新的时候,才会正式对数据的冲突与否停止检测,假如发明冲突了,则返回给会员错误的信息,让会员决议怎样去做。

baidu百科:
悲观锁机制采取了愈加宽松的加锁机制。悲观锁是相对悲不雅锁而言,也是为了不数据库幻读、业务处置时间过长等缘由引发数据处置错误的一种机制,但悲观锁不会刻意使用数据库本身的锁机制,而是根据数据本身来包管数据的准确性。

相关于悲不雅锁,在对数据库停止处置的时候,悲观锁并不会使用数据库供给的锁机制。一样的实现悲观锁的方式就是记载数据版本。

14b6665f7ab991c17d51371cb6fe5e2.png

悲观并发操纵信赖事务之间的数据竞争(data race)的概率是比力小的,因此尽大概直接做下去,直到提交的时候才去锁定,所以不会发生任何锁和死锁。

悲不雅锁(Pessimistic Lock)

当要对数据库中的一条数据停止修改的时候,为了不同时被其别人修改,最好的方法就是直接对该数据停止加锁以防止并发。这种借助数据库锁机制,在修改数据此前先锁定,再修改的方式被称之为悲不雅并发操纵【别名“悲不雅锁”,Pessimistic Concurrency Control,缩写“PCC”】。

baidu百科:
悲不雅锁,正如其名,具有热烈的独占和排他特性。它指的是对数据被外界(包罗本系统当前的其他事务,乃至来自外部系统的事务处置)修改持保守态度。因此,在整个数据处置历程中,将数据处于锁定状态。悲不雅锁的实现,往往依托数据库供给的锁机制(也只要数据库层供给的锁机制才能真正包管数据拜访的排他性,不然,即便在本系统中实现了加锁机制,也没法包管外部系统不会修改数据)。

之所以叫做悲不雅锁,是由于这是一种对数据的修改抱有悲不雅态度的并发操纵方式。我们一样认为数据被并发修改的概率比力大,所以需要在修改此前先加锁。

悲不雅锁主要分为同享锁或排他锁

  • 同享锁【Shared lock】又称为读锁,简称S锁。望文生义,同享锁就是多个事务关于统一数据可以同享一把锁,都能拜访到数据,但是只能读不克不及修改。

  • 排他锁【Exclusive lock】又称为写锁,简称X锁。望文生义,排他锁就是不克不及与其他锁共存,假如一个事务猎取了一个数据行的排他锁,其他事务就不克不及再猎取该行的其他锁,包罗同享锁和排他锁,但是猎取排他锁的事务是可以对数据行读取和修改。

悲不雅并发操纵实际上是“先取锁再拜访”的保守战略,为数据处置的平安供给了包管。

c79d23160809ffa424fec654b45659d.png

但是在效力方面,处置加锁的机制会让数据库发生额外的开销,还有增添发生死锁的时机。别的还会落低并行性,一个事务假如锁定了某行数据,其他事务就必需等候该事务处置完才可以处置那行数据。

以上就是悲不雅锁悲观锁的定义的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有153人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板