事务及其属性
事务是由一组SQL语句组成的逻辑处理单元,具有以下4个属性,通常简称位ACID属性:
一致性(Consistent):在事务开始和完成时,数据必须保持一致状态。这意味这所有相关的数据规则都必须用于事务的修改,以保证数据的完整性。
原子性(Atomicity):事务是一个原子操作单元,其对数据的修改要么是全部执行要么全部不执行。
隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并行操作影响的独立环境执行。这意味着事务处理过程中的中间状态对外部是不可见的。
持久性(Durable):事务完成后,对于数据的修改是永久性的,即使出现系统故障也能保持。
并发事务的影响
更新丢失(Lost update)或脏写
当两个或多个事务执行同一行时,都是基于最初获取到的数据更新该行,由于每个事务不知道其它事务的存在,就会发生丢失更新问题-最后的更新会覆盖由其它事务所做的更新。
脏读(dirty reads)
一个事务在对一条记录进行修改时,在这个事务完成并提交前,这条记录数据就处于不一致的状态。这时有另一个事务也来读取同一记录,如果不加以控制,读的事务读取了这些数据,但写的数据被回滚,并据此作进一步处理,就会产生未提交的