(一)事务具有ACID特性。
分别为:
原子性 | Atomicity |
一致性 | Consistency |
隔离性 | Isolation |
持久性 | Durability |
- 原子性
原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 - 一致性
一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。 - 隔离性
隔离性是当多个用户并发访问数据库时,比如同时操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。 - 持久性
持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
(二)事务不隔离会出现的问题
- 脏读:一个事务读取另一个事务修改但未提交的数据。
- 不可重复读:在一个事务中,读取了一条数据,此时,又有一个新的事务访问了这个数据并且进行了修改,在原来的事务重新读取这条数据,读到的结果是不一样的。
- 幻读:在一个事务中对所以数据进行了修改,此时又有另外一个事务插入了新的纪录,则原来的事务再次读取数据时,就会发现还会有未修改的数据。
(三)事务的隔离级别
mysql默认为可重复读。