什么是事务
实际业务场景中,经常会遇到数据频繁修改读取的问题。同时刻,不同的业务逻辑,对同一个表数据进行修改,这种冲突很可能造成数据不可挽回的错乱,所以我们需要用事务来对数据进行管理。
概念:事务就是一系列指令的集合。
事务必须服从ACID原则。
ACID:原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)
- 原子性:执行这些指令,要么全执行,要么全不执行。其中一个失败,满盘皆输,数据回滚,回到解放前数据状态。
- 一致性:事务的执行使数据状态改变,但对于整个数据的完整性保持稳定。
- 隔离性:一个事务执行过程中,任何数据改变都只在这个事务中,对外界无影响;事务确定提交后,才显示改事务对数据的改变。其他事物才能获取改变后的数据。
- 持久性:事务正确的运行后,对于数据的改变是永久的。
并发事务导致四种问题
多事务处理统一数据时,如果没有隔离措施,并发处理数据,会出现问题。
脏读
一个事务读取到另一个事务未提交的数据。
幻读
一个事务执行两次查询,第二次结果集包含第一次中没有或者已经被删除的数据;两次结果的数据数量不一样(和不可重复读的区别),是另一个事务再两次查询中间插入或删除数据造成的。
不可重复读
一个是无两次读取同一行数据,结果不同,中间另一个事务修改了该数据。