什么是事务
事务就是一组因为逻辑上紧密关联而合并成一个整体的多个数据库操作。这些操作要么都执行,要么都不执行。
事务的四大特性(ACID)
- A: Automicity(原子性)。事务不可再分,事务中的操作要么都执行,要么都不执行。
- C: Consistency(一致性)。事务执行前后,数据保持一致。比如刚开始A有800,B有200,A转给B200后,A有600,B有400。符合逻辑规则。
- I: Isolation(隔离性)。事务往往是并发执行的,并发访问数据库时,不能互相干扰。
- D: Durability(持久性)。一个事务被提交之后,它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。
事务并发带来的问题
-
脏读(Dirty Read)
脏数据就是指未提交的数据。当一个事务对数据做了修改,在事务没有提交之前,这个修改的数据处于待定状态,之后可能被提交,也可能回滚。这个时候另外一个事务读取了这条数据,这就是脏读。 -
不可重复读(Non-Repeatable Reads)
一个事务先后读取同一条记录,但在两次读取之间,数据被其他事务所修改,导致两次读到的数据不一样,这就是不可重复读。 -
幻读(Phantom Reads)
一