什么是事务?

事务就是把多件事情当做一件事情来处理。是数据库操作的最小单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元)。

为什么要有事务?

事务的提出就是为了解决并发情况下保持数据一致性的问题。

事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。

数据库事务的四大特征

(1)原子性

原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。因此事务操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。

(2)一致性

一致性是指事务必须使数据库从一个一致性状态转换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。

(3)隔离性

隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。

(4)持久性

持久性是指一个事物一旦被提交了,那么对数据库中数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

事务的隔离级别

(1)Serializable(串行化):可避免脏读、不可重复读、幻读的发生

(2)Repeatable read(可重复读):可避免脏读、不可重复读的发生。

(3)Read committed(读已提交):可避免脏读的发生

(4):Read uncommitted(读未提交):最低级别,任何情况下都无法保证。

以上四种隔离级别最高的是Serializable级别,最低的是Read uncommitted级别,当然级别越高,执行效率就越低。在MySQL数据库中默认的隔离级别为Repeatable read (可重复读)。