一.事务特性ACID
1.原子性(Atomicity):事务是一个原子操作,事务中的数据修改要么都执行,要么都不执行;
2.一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。
3.隔离性(lsolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的独立环境执行,也就是事务处理过程的中间状态对外部不可见;
4.持久性(Durable):事务完成后,对数据的修改是永久性的,即使系统出现故障也能保持;
二.事务导致的问题
1.丢失更新或者脏写:当多个事务操作同一行,后提交的事务会覆盖先提交的事务;
2.脏读:一个事务A对一条数据做修改,在事务A提交事务前,这条记录的数据处于不一致的状态;这时事务B读取同一条数据,读取的是未提交的数据并以此作进一步处理,就对未提交的数据产生依赖,这种现象叫做脏读;
3.不可重复读:一个事务在不同的时间读取相同数据,得到不同的结果,这叫做不可重复读;
4.幻读:一个事务按相同的条件查询以前查询过的数据,发现其他事务插入了满足其查询条件的新数据;事务A在提交前读取了事务B已经提交的数据;
三.事务隔离级别
1.读未提交:最低的隔离级别,允许读取其他事务未提交的数据,会导致脏读,不可重复读和幻读;
2.读已提交:允许读取并发事务已提交的数据,租客组织脏读,但是不能组织不可重复读和幻读;
3.可重复读:对同一字段的多次读取结果一致,除非数据被事务本身修改,可以防止脏读,不可重复读和部分幻读;
4.可串行化:最高隔离级别,完全服从ACID特性,所有事务串行执行,事务之间不可能对其他事务产生干扰。