MySQL中的事务
一、事务的概念:
事务就是一组原子性的SQL语句,事务内的语句,要么全部执行成功,要么全部执行失败
二、事务的特性
原子性(atomicity): 一个事务中的SQL语句要么全部执行成功,要么全部执行失败。不存在一部分SQL语句执行成功,一部分SQL语句执行不成功。
一致性(consistency):在执行事务时,其中一部分SQL执行成功。此时系统发生崩溃,整个事务将全部回滚,不会出现一部分成功的情况,因为此时事务并未提交。
隔离性(isolation): 一个事务在提交之前所做的修改在提交之前对其他事务是不可见的。
持久性(durability): 事务一旦提交,就会将修改永久地保存到数据库中
三、事务的隔离级别
未提交读:在事务未提交之前,所做的修改对其他事务是可见的(脏读)
提交度:一个事务从开始直到提交之前,所作的修改对其他事务都是不可见的, 提交之后对其他事务是可见的(不可重复读)
可重复读:在同一事务中多次读取同样的记录的结果是一致的(幻读)
InnoDB通过MVCC的方式解决了在快照读下幻读的问题,以及通过Next-Key的方式解决了在当前读下的幻读问题
可串行化:该级别是最高的隔离级别,通过强制串行事务的方式,解决幻读的问题