数据库事务总结

原子性、一致性、分离性、持久性
(1) 原子性:对数据库的修改全执行或全不执行
? 事务的原子性指的是,事务中包含的程序做为数据库的逻辑工做单位,它所作的对数据修改操做要么所有执行,要么彻底不执行。这种特性称为原子性。
? 事务的原子性要求,若是把一个事务可看做是一个程序,它要么完整的被执行,要么彻底不执行。就是说事务的操纵序列或者彻底应用到数据库或者彻底不影响数据库。这种特性称为原子性。
  假如用户在一个事务内完成了对数据库的更新,这时全部的更新对外部世界必须是可见的,或者彻底没有更新。前者称事务已提交,后者称事务撤消(或流产)。DBMS必 须确保由成功提交的事务完成的全部操纵在数据库内有彻底的反映,而失败的事务对数据库彻底没有影响。数据库

(2) 一致性:执行先后数据库不可变
    事务的一致性指的是在一个事务执行以前和执行以后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态知足全部的完整性约束,就说该数据库是一致的。
??一致性处理数据库中对全部语义约束的保护。假如数据库的状态知足全部的完整性约束,就说该数据库是一致的。例如,当数据库处于一致性状态S1时,对数据库执行一个事务,在事务执行期间假定数据库的状态是不一致的,当事务执行结束时,数据库处在一致性状态S2。安全

(3) 分离性:不被事务看到
??分离性指并发的事务是相互隔离的。即一个事务内部的操做及正在操做的数据必须封锁起来,不被其它企图进行修改的事务看到。
  分离性是DBMS针对并发事务间的冲突提供的安全保证。DBMS能够经过加锁在并发执行的事务间提供不一样级别的分离。假如并发交叉执行的事务没有任何控制,操纵相同的共享对象的多个并发事务的执行可能引发异常状况。
??DBMS能够在并发执行的事务间提供不一样级别的分离。分离的级别和并发事务的吞吐量之间存在反比关系。较多事务的可分离性可能会带来较高的冲突和较多的事务流产。流产的事务要消耗资源,这些资源必需要从新被访问。所以,确保高分离级别的DBMS须要更多的开销。并发

(4)持久性:数据改变永久的
??持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事务提交,DBMS保证它对数据库中数据的改变应该是永久性的,耐得住任何系统故障。持久性经过数据库备份和恢复来保证,持久性主要在于DBMS的恢复性能。性能

隔离级别:spa

        √: 可能出现    ×: 不会出现对象

  脏读 不可重复读 幻读
Read uncommitted
Read committed ×
Repeatable read × ×
Serializable × × ×

 

一、脏读(dirty read):一个事务能够读取另外一个还没有提交事务的修改数据。事务

二、非重复读(nonrepeatable read):在同一个事务中,同一个查询在T1时间读取某一行,在T2时间从新读取这一行时候,这一行的数据已经发生修改,可能被更新了(update),也可能被删除了(delete)。ci

三、幻读(phantom read):在同一事务中,同一查询屡次进行时候,因为其余插入操做(insert)的事务提交,致使每次返回不一样的。资源

相关文章
相关标签/搜索