一、事务属性
原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。(针对于操作层面)
一致性(Consistent) :在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性。(针对于数据层面)
隔离性(Isolation) :数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。这意味着事务处理过程中的中间状态对外部是不可见的,反之亦然。
持久性(Durable) :事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。
二、并发事务带来的问题
更新丢失或者脏写(Lost Update):当两个事务或者多个事务对同一条数据做更新时,后面提交的数据会覆盖前面的写数据;
脏读(Dirty Reads):事务A读取到了还未提交事务B的数据;
不可重复读(Non-Repeatable Reads):事务A和事务B同时begin时,事务B先提交了,事务A读取到了事务B已提交的数据;
幻读(Phantom Reads):事务A和事务B同时begin时,事务B先提交了,事务A读取到了事务B已提交的新增数据.