`

事务并发访问问题

阅读更多

第一类丢失更新
    A事务撤销时,把已经提交的B事务的更新数据覆盖了。这种错误可能造成很严重的问题,通过下面的账户取款转账就可以看出来:

时间
取款事务A
转账事务B
T1
开始事务
 
T2
 
开始事务
T3
查询账户余额为1000元     
 
T4
 
查询账户余额为1000元
T5
 
汇入100元把余额改为1100元
T6
 
提交事务
T7
取出100元把余额改为900元
 
T8
撤销事务
 
T9
余额恢复为1000 元(丢失更新)
 


A事务在撤销时,“不小心”将B事务已经转入账户的金额给抹去了。
    第二类丢失更新
A事务覆盖B事务已经提交的数据,造成B事务所做操作丢失:  

时间
转账事务A
取款事务B
T1
 
开始事务
T2
开始事务
                         
T3
               
查询账户余额为1000元     
T4
查询账户余额为1000元
                         
T5
 
取出100元把余额改为900元
T6
 
提交事务           
T7
汇入100元
 
T8
提交事务
 
T9
把余额改为1100 元(丢失更新)
 


    上面的例子里由于支票转账事务覆盖了取款事务对存款余额所做的更新,导致银行最后损失了100元,相反如果转账事务先提交,那么用户账户将损失100元。

 

第二类脏读
       就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。
       因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的
更新
    A事务撤销时,把已经提交的B事务的更新数据覆盖了。这种错误可能造成很严重的问题,通过下面的账户取款转账就可以看出来:
时间
事务A
事务B
T1
开始事务
 
T2
 
开始事务
T3
查询customer表
 
T4
 
查询customer表
T5
 
也修改了customer字段address字段
T6
 
 
T7
使用该表的customer字段(是假)
 
T8
提交事务
 
提交事务
T9
余额恢复为1000 元(丢失更新)
 
 
第二类虚读
      是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。
 
第三类不可重复读
    是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。
     
分享到:
评论

相关推荐

    事务并发访问及隔离机制

    事务并发带来的坏处,以及通过设置事务隔离级别来处理

    3TS--分布式事务并发访问控制算法详解--腾讯TDSQL1

    在分布式数据库系统中,为了保证数据的一致性和完整性,必须解决事务的并发访问问题。本文主要探讨一种名为3TS的分布式事务并发访问控制算法,它结合了多种经典并发控制策略,旨在提高系统的并发性能和事务的可串行...

    Hibernate事务和并发控制

    至于并发控制,主要目的是解决多用户同时访问同一数据时可能出现的问题,如脏读、不可重复读和幻读等。在数据库层面,常见的并发控制机制包括锁和乐观锁。Hibernate提供了多种并发策略,如版本字段(version)和...

    第10章-事务管理:并发控制与恢复

    在数据库管理中,事务管理是至关重要的一个环节,它涵盖了并发控制和恢复机制,确保数据在多用户同时访问时的完整性和一致性。本章主要讨论的是如何在数据库系统中实现有效的事务管理和处理并发操作的问题。 首先,...

    MySQL事务处理与并发访问.pdf

    MySQL事务处理与并发访问.pdf

    J2EE事务并发控制策略总结汇编.pdf

    本文主要围绕J2EE环境下的持久层设计,特别是针对事务并发访问控制进行总结。事务并发访问控制分为两类:同一系统事务内的并发控制和跨系统事务的并发控制。在讨论具体策略之前,首先需要理解数据库事务的四种隔离...

    Hibernate 事务和并发控制

    在多用户环境下,同时访问同一数据可能会引发并发问题,如脏读、不可重复读和幻读。Hibernate提供了一些策略来解决这些问题,包括乐观锁和悲观锁。 乐观锁假设并发冲突很少发生,通常在数据更新时检查版本号或...

    Oracle并发问题处理

    在Oracle数据库中,随着企业级应用系统的扩展和用户数量的增长,多个用户并发访问同一份数据的现象变得越来越常见。如果数据库设计和应用程序开发中没有妥善处理并发问题,则可能出现数据不一致、脏读等问题,甚至...

    Hibernate教程26_事务并发处理

    在多用户同时访问数据库时,事务并发控制就显得尤为重要,以防数据冲突和不一致。 悲观锁是假设最坏的情况,即每次读取数据时都假设会有其他用户同时尝试修改。因此,悲观锁会在数据读取时立即加上锁,直到事务结束...

    hibernate 对事务并发处理

    Hibernate 对事务并发处理 在 Hibernate 中,对事务并发处理是非常重要的, especialmente 在多用户环境中。事务处理的目的是为了保证数据的可靠性和一致性。 事务四个特性 ACID 1. 原子性(Atomicity):事务...

    J2EE事务并发控制策略总结

    J2EE事务并发控制策略总结 当前J2EE项目中,面临的一个共同问题就是如果控制事务的并发访问,虽然有些持久层框架已经为我们做了很多工作,但是理解原理,对于我们开发来说还是很有用处

    laravel分布式并发锁

    // 在这里进行事务操作,自动处理并发问题 ... }); ``` 3. Mutex(互斥锁)和 Semaphore(信号量):这些是更高级别的并发控制机制,适用于更复杂的场景。Mutex 只允许一个进程访问资源,而 Semaphore 可以设置...

    事务及其并发控制实验1

    锁机制是指数据库系统用于控制事务执行过程中的并发访问的机制。锁机制可以避免数据的不一致和丢失,提高数据库的可靠性。 8. 错误处理 错误处理是指在事务执行过程中出现错误时的处理机制。错误处理可以使用TRY-...

    并发访问ORACLE数据库的数据死锁分析和解决措施.pdf

    然而,在面对高并发访问时,数据死锁问题却是一大挑战。本文将深入探讨并发访问Oracle数据库时数据死锁的原因,并提出有效的分析和解决措施,以期为相关技术人员提供专业指导和参考文献。 首先,要理解数据死锁的...

    事务和并发控制PPT学习教案.pptx

    事务和并发控制是计算机科学中两个重要的概念,它们都是为了解决多用户访问同一个资源时可能出现的问题。在本学习教案中,我们将学习事务和并发控制的概念、特点和实现方法。 一、事务 事务是指客户定义的针对...

    学习J2EE事务并发控制策略总结.pdf

    这篇文章主要聚焦于J2EE环境中持久层的设计挑战,特别是如何处理事务的并发访问。它提到了几种常见的并发控制策略,包括乐观锁和悲观锁,以及如何在不同数据库事务隔离级别下应用这些策略。 首先,数据库事务隔离...

    数据库中的事务管理,恢复以及并发控制技术.doc

    并发访问分为串行访问和并发访问,前者是依次执行,后者则是在时间上重叠执行,可以是交叉并发或同时并发。并发执行能够提高资源利用率,尤其是短事务的响应时间,但同时也引入了数据不一致性的问题。 并发操作可能...

    Hibernate中,利用版本管理机制来控制事务并发

    总之,Hibernate的版本管理机制是解决事务并发问题的有效手段,通过合理地利用乐观锁和悲观锁,开发者可以创建出高效且一致性的数据访问层。在开发过程中,理解并掌握这些并发控制策略对于优化系统的性能和稳定性至...

Global site tag (gtag.js) - Google Analytics