`

丢失更新的解决方案(乐观锁+悲观锁)

 
阅读更多

   丢失更新: 当两个事物或多个事务都更新了同一条数据,但是这些事务彼此之间都不知道其他事务进行的修改,因此第二个更改覆盖了第一次的更改,说白了,就是事务A还没有提交之后,但是这个时候事务B更新了数据,那么事务A就丢失更新了。

  解决方案: 乐观锁+悲观锁

    悲观锁: 数据库的一种锁机制,悲观锁分成两种,分别是共享锁和排它锁

    添加共享锁方式:select * from account lock in share mode ;
    添加排它锁方式:select * from account for update;

    

   下面说一下共享锁: 共享锁就是,例如 我在客户端A 给数据C 添加了共享锁,此时我在客户端B只能添加共享锁进行查看,没有修改的权利,如果我想要在客户端B进行修改,我只能在A处commit才能进行修改。

   下面说一下排它锁:排它锁就是我在客户端A 给数据C添加了排它锁,那么我在客户端B只能在客户端 A commit之后,才能select数据,换句话说,只要我在客户端B用锁进行了查询,那我我都需要等待Acommit之后,如果此时我客户端B不加锁,我是可以查询到的。这个排它锁很像数据库隔离级别中的最高的隔离级别。但是排它锁是锁住了一条数据,而排它锁是锁上了这条数据。

 

   说完了悲观锁,那么我们在说说乐观锁。

    乐观锁:就是假设丢失更新不存在,它使用的是数据库的字段进行加测。 例如我在我的字段中添加一个字段,字段的类型是 timestamp 在插入和修改时 都会自动更新为当前时间 ,我根据我的sql条件进行判断,如果我的时间不符合,那么我的跟新失败。

 

  

  • 大小: 15.4 KB
分享到:
评论

相关推荐

    Java面试解析总结:Java+Redis+数据库+解决方案+分布式...docx

    - **乐观锁**与**悲观锁**:乐观锁通常使用版本号或时间戳来检查数据是否被其他事务修改;悲观锁则是在事务开始时就获取锁,直到事务结束才释放。 - **排他锁**:阻止其他事务读取或写入数据。 - **共享锁**:...

    SQL并行更新时丢失数据实例

    3. **并发控制**:使用乐观锁或悲观锁机制,根据实际情况选择合适的并发控制策略。 4. **查询优化**:合理设计SQL查询,避免全表扫描和大范围的索引扫描,减少并行更新过程中的冲突。 5. **并行度调整**:适当调整...

    hibernate 对事务并发处理

    解决丢失更新有两种方法:悲观锁和乐观锁。 悲观锁 悲观锁采用数据库内部锁机制,在一个事务操作数据时,为数据加锁,另一个事务无法操作。 例如,在 Hibernate 中使用悲观锁: ```java Customer customer = ...

    6种分布式事务最终一致性解决方案,一次性说清.docx

    例如乐观锁和悲观锁策略,适用于高并发场景。 在设计分布式事务时,我们需要关注系统的高可用性、数据的最终一致性、服务的独立演化和部署能力,以及对异构数据存储的支持。同时,低侵入性和对同步/异步流程的支持...

    数据库并发操作 。

    并发控制的主要目标是防止数据的不一致性和丢失更新,确保事务的隔离性和可串行化。 首先,让我们探讨悲观锁。悲观锁假设并发环境中会发生冲突,因此在读取数据时就对数据进行锁定,不允许其他事务进行修改。在...

    一种基于hebernate乐观锁的信息系统开发模型 (2012年)

    10. 并发解决办法的分类:并发控制的解决方案可以大致分为悲观锁和乐观锁,本文主要探讨的是乐观锁,即通过版本号来检测并发冲突的机制。 以上知识点覆盖了从数据库并发控制到软件架构设计,从面向对象技术到框架...

    EntityFramework并发冲突解决方案.docx

    ### EntityFramework并发冲突解决方案 #### 一、并发冲突概述 在多用户系统中,尤其是在Web应用环境下,多个用户可能会同时尝试修改同一数据记录。这种情况下,如果没有适当的并发控制机制,可能会导致数据不一致...

    广联达全国写锁GLDXSRSS

    2. **并发控制**:软件内置了高级的并发控制策略,如乐观锁或悲观锁,来管理和协调多个用户同时访问数据时的权限和顺序,确保数据的安全性。 3. **版本控制**:为了追踪数据的变化历史,软件可能包含版本控制系统,...

    行业分类-外包设计-在组合服务递送系统中管理并发数据更新的说明分析.rar

    在IT行业中,组合服务递送系统(Composite Service Delivery System)是一种关键的技术,它允许企业将多个...在设计和实施这些解决方案时,还需要考虑系统的可扩展性、容错性和维护性,以确保系统的长期稳定运行。

    并发问题详述(sql)

    并发问题在数据库环境中是常见的挑战,特别是在多用户系统中,多个事务...在实际应用中,根据具体需求和性能考虑,可能还需要结合其他的并发控制策略,比如乐观锁、悲观锁、行级锁、页级锁等,以找到最适合的解决方案。

    基于图数据库的高效更新策略.pptx

    - **并发控制机制**:采用乐观并发控制或悲观并发控制机制,根据具体业务场景选择合适的策略。 - **回滚或重试**:提供回滚或重试机制,确保在冲突发生时恢复数据一致性。 5. **性能优化**: - **高效数据结构与...

    实用数据库的并发控制剖析

    3. **乐观锁**(Optimistic Locking)和**悲观锁**(Pessimistic Locking):乐观锁假设并发冲突很少发生,因此在数据真正被修改之前不加锁;悲观锁则相反,它假设并发冲突频繁发生,因此在数据被读取时就开始加锁。...

    扫码点餐多人同步.zip

    《扫码点餐多人同步技术详解》 随着移动互联网的飞速发展,扫码点餐已经成为餐饮行业的一种主流方式,尤其在多人聚餐时,其便捷性...随着科技的不断进步,我们可以期待更多类似的智能解决方案出现在我们的日常生活中。

    struts+spring+hibernate资料

    - **乐观锁**:通常使用版本号或时间戳来检测并发更新丢失。在 Hibernate 映射文件中,可以通过 `<class>` 元素设置 `optimistic-lock="all"` 来实现在没有版本或时间戳属性的情况下对所有字段进行版本检查。 - **...

    多核与并发数据结构-用于列车售票的可线性化并发数据结构.zip

    6. **乐观锁与悲观锁**:乐观锁假设冲突较少,只有在提交操作时才检查数据是否被其他线程修改;悲观锁则在操作开始前就获取锁,防止其他线程改变数据。在高并发系统中,根据实际情况选择合适的锁策略。 7. **队列的...

    数据库系统工程师历年试题及答案,或许对你有帮助!

    并发控制是保证多用户环境下数据一致性的重要手段,比如锁定机制(排他锁、共享锁)、乐观锁和悲观锁的概念,以及MVCC(多版本并发控制)的工作原理。 备份与恢复策略包括完整备份、增量备份、差异备份,以及如何...

    天津大学数据库原理上机实验.zip

    此外,可能会探讨乐观锁和悲观锁的区别,以及多版本并发控制(MVCC)的概念。 通过这四个实验,学生不仅能够巩固理论知识,还能掌握数据库的实际应用技能,为未来在数据库管理系统开发、数据分析、数据库管理等领域...

    华中科技大学网络空间安全学院-数据库系统原理实验-内含源码和说明书(可自行修改).zip

    7. 并发控制:多用户环境下如何处理并发操作,如锁机制和乐观锁、悲观锁的对比。 8. 数据恢复与备份:介绍日志文件、备份策略以及在数据丢失后如何进行恢复。 9. 实验指导:可能包含实验步骤、预期结果和问题解决...

    北大青鸟accp7.0优化MySchool数据库设计课件+上级+课后作业答案

    课程会讲解ACID(原子性、一致性、隔离性和持久性)特性,以及锁机制、乐观锁和悲观锁的区别,确保数据的一致性和完整性。 6. **数据库备份与恢复**:数据安全是数据库设计的重要环节,课程会涵盖备份策略、增量...

Global site tag (gtag.js) - Google Analytics