本文修改、整理自:
事务具有 ACID 四个特性:
原子性(Atomicity)
原子性是指一个事务中的所有操作要么全执行,要么全不执行。如果事务执行过程中发生错误,那么数据库会被回滚到事务开始前的状态
一致性(Consistency)
一致性是指在事务开始之前和事务结束之后,数据库的完整性约束不能被破坏
隔离性(Isolation)
隔离性是指当多个事务同时操作同一条或多条记录时,会对事务进行隔离,使它们有序执行,避免多个事务同时操作同一条记录。事务的隔离级别有:
持久性(Durability)
持久性是指事务一旦提交对数据库的影响是持久的,需要将事务的执行结果保存到持久化存储中
事务隔离级别用于解决数据在高并发情况下产生的问题。
脏读是指一个事务读取到另外一个事务修改但未提交的数据。
不可重复读是指一个事务读取到另外一个事务已提交的数据,导致两次读取到的数据不一致。
幻读是指某次 select 操作得到的结果集所表征的数据状态无法支撑后续的业务操作。
具体来说:select 某记录是否存在,如果不存在,则准备插入此记录,但是执行 insert 操作时,发现该记录已经存在,无法插入,此时就产生了幻读。
事务隔离级别越严格,效率越低,通常将其设置为 READ COMITTED,就可以解决大多数问题。