解释
1、百度百科:数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。
2、个人理解:就是将一系列有关联的数据库操作(相互依赖),捆绑在一起,“同生共死”。顾名思义就是,全部执行成功,ok没毛病;否则,某一条出现问题,回滚到,整个捆绑操作(即事务)之前。
事务的另一个重要作用是当多个用户同时使用相同的数据源时,它可以利用锁定数据库的方法来为用户提供一种安全的访问方式,这样可以保证用户的操作不被其它的用户所干扰。(并发)
属性ACDI(理解含义后容易记很多)
1、原子性:事务必须是原子工作单元,对于其对数据库(相互依赖)的修改,要么全部执行成功,要么全部不执行。
2、一致性:事务执行完成时,保证数据库中相关数据保持一致。保持数据完整性。
3、隔离性:由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为隔离性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。当事务可序列化时将获得最高的隔离级别。在此级别上,从一组可并行执行的事务获得的结果与通过连续运行每个事务所获得的结果相同。由于高度隔离会限制可并行执行的事务数,所以一些应用程序降低隔离级别以换取更大的吞吐量。
4、持久性:事务完成后,影响是永久的,包括故障。
处理模式
1、隐式事务:每一条数据操作语句都自动地成为一个事务,事务的开始是隐式的,事务的结束有明确的标记。
2、显式事务:有显式的开始和结束标记的事务,每个事务都有显式的开始和结束标记。
3、自动事务:系统自动默认的,开始和结束不用标记。
并发操作带来的数据不一致
丢失数据修改
读”脏”数据(脏读):产生多读的不正确数据
不可重复读:多次读取不一致
产生幽灵数据:多次读取出现,数据减少和数据增加