乐观锁和悲观锁

技术乐观锁和悲观锁 乐观锁和悲观锁悲观锁:具有强烈的独占和排他特性。它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度。因此,在整个数据处理过程中,将数据处于锁定

乐观锁和悲观锁。

悲观锁:具有很强的排他性和排他特性。是指外界对数据修改的保守态度(包括系统当前的其他事务和来自外部系统的事务)。因此,在整个数据处理过程中,数据是被锁定的。悲观锁的实现往往依赖于数据库提供的锁机制(只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则即使在这个系统中实现了锁机制,也不能保证外部系统不会修改数据)。

之所以叫悲观锁,是因为它是一种对数据修改持悲观态度的并发控制方法。总是假设最坏的情况。每次读取数据时,您默认其他线程会更改数据,因此您需要锁定它。当其他线程想要访问数据时,您需要阻塞并挂起它。悲观锁的实现:

1.传统的关系数据库使用这种锁定机制,如行锁、表锁、读锁、写锁等。所有这些都在操作前锁定。

2.同步关键字在Java中的实现。

悲观锁主要分为共享锁和排他锁:

共享锁[共享锁]也称为读锁,简称S锁。顾名思义,共享锁是指多个事务可以共享同一个数据的锁,所有事务都可以访问数据,但只能读取,不能修改。

排它锁[排它锁]也叫写锁,简称X锁。顾名思义,排他锁不能和其他锁共存。如果一个事务获得了一个数据行的排他锁,那么其他事务就不能获得该行的其他锁,包括共享锁和排他锁。获取的排他锁事务可以读取和修改数据行。

乐观锁定:乐观锁定是一种相对悲观的锁定。乐观锁定假设数据的一般情况不会引起冲突,因此在数据提交更新时,会正式检查数据是否存在冲突。如果是冲突的,它会向用户返回异常信息,让用户决定怎么做。乐观锁定适合读多写少的场景,可以提高程序的吞吐量。乐观锁定采用了更宽松的锁定机制。也是避免因数据库假象和业务处理时间过长而导致数据处理错误的机制。但是乐观锁定不会刻意使用数据库本身的锁定机制,而是根据数据本身来保证数据的正确性。乐观锁定的实现:

1.CAS实现:java中java.util.concurrent.atomic包下的原子变量使用乐观锁定的CAS实现方法。

2.版本号控制:通常,数据版本号版本字段被添加到数据表中,以指示数据被修改的次数。当数据被修改时,版本值将为1。当线程A想要更新数据时,也会在读取数据的同时读取版本值。提交更新时,如果刚刚读取的版本值等于当前数据库中的版本值,则在更新成功之前不会更新。

3.乐观并发控制认为事务之间数据竞争的概率比较小,所以尽量直接做,一直锁到提交,这样就不会出现锁或者死锁的情况。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/146470.html

(0)

相关推荐

  • 怎么使用C++写嵌入式代码

    技术怎么使用C++写嵌入式代码本篇内容介绍了“怎么使用C++写嵌入式代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!嵌

    攻略 2021年11月29日
  • 如何使用Eclipse进行PHP的服务器端调试

    技术如何使用Eclipse进行PHP的服务器端调试这篇文章将为大家详细讲解有关如何使用Eclipse进行PHP的服务器端调试,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先,得将您P

    攻略 2021年11月25日
  • 如何解决Hibernate批量更新问题

    技术如何解决Hibernate批量更新问题这篇文章主要介绍了如何解决Hibernate批量更新问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。对于Hib

    攻略 2021年12月8日
  • 香港云服务器安全吗

    技术香港云服务器安全吗对于网站服务器的安全一直都是很多站长需要首先考虑的问题,即便是有高效冗余备份的香港云服务器也可能存在一些潜在的安全问题,那么租用香港云服务器究竟能否保证数据和网站的安全。其实在安全性上很多香港云服务

    礼包 2021年10月26日
  • 口加偏旁组成新字,“口”字加偏旁,变新字。

    技术口加偏旁组成新字,“口”字加偏旁,变新字。“口”字加偏旁能组成 口加偏旁组成新字:e799bee5baa6e997aee7ad94e58685e5aeb931333365646262中、叶 、古 、右 、占 、号 、

    生活 2021年10月27日
  • 铁的质量分数,四氧化三铁的原子质量分数

    技术铁的质量分数,四氧化三铁的原子质量分数解答(1)相对分子质量=相对原子质量与相应原子个数的乘积和铁的质量分数,则四氧化三铁的相对分子质量=56×3+16×4=232;(2)某元素质量分数═该原子的相对原子质量×该原子

    生活 2021年10月29日