mysql事务机制

简介

知识点:

  1. 什么是事务
  2. 事务的特点
  3. 事务的隔离机制
  4. 事务的并发问题

事务概念和特点

事务是指执行大量和复杂的数据操作,只有innodb引擎才支持事务。

事务具有以下特点:

  1. 一致性:如果事务没有成功,则所做的修改将不会保存到数据库中
  2. 原子性:事务的所有操作,要么全部成功提交,要么全部失败回滚
  3. 持久性:一旦事务成功提交,则对数据库的修改是永久有效的
  4. 隔离性:一个事务在提交之前所做的修改,对于其他事务是不可见的

操作sql

1
2
3
4
5
6
7
8
9
start tranction;
select * from userinfo where id = 1;
update userinfo set number = 1 where id =1;
commit;

begin;
select * from userinfo where id = 1;
update userinfo set number = 1 where id =1;
commit;

隔离机制

未提交读(READ UNCOMMITTED)

事务可以读取到未提交的数据

提交读(READ COMMITTED)

事务从开始到结束之前所做的任何修改,对于其他事务都是不可见的

重复度(REPEATABLE READ)

事务多次读取同一数据,返回的结果都是一致的。

可重复读是mysql默认的隔离机制。

可串行化(SERIALIZABLE)

一个事务在没有提交完成时,其他事务无法进行,需要进行等待。

并发问题

脏读

事务可以读取到未提交的数据。

幻读(针对添加和删除)

事务A多次读取同一范围内的数据时,事务B在此范围内进行了删除或者修改,导致事务A出现了幻行。

不可重复读(针对修改)

事务A多次读取同一数据时,事务B对此数据进行了修改,导致事务A返回的数据不一致。

隔离机制并发问题整合

隔离级别 脏读 不可重复读 幻读
未提交读
提交读
重复读
可串行化
0%