简介
知识点:
- 什么是事务
- 事务的特点
- 事务的隔离机制
- 事务的并发问题
事务概念和特点
事务是指执行大量和复杂的数据操作,只有innodb引擎才支持事务。
事务具有以下特点:
- 一致性:如果事务没有成功,则所做的修改将不会保存到数据库中
- 原子性:事务的所有操作,要么全部成功提交,要么全部失败回滚
- 持久性:一旦事务成功提交,则对数据库的修改是永久有效的
- 隔离性:一个事务在提交之前所做的修改,对于其他事务是不可见的
操作sql
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返回的数据不一致。
隔离机制并发问题整合
隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
未提交读 | 是 | 是 | 是 |
提交读 | 否 | 是 | 是 |
重复读 | 否 | 否 | 是 |
可串行化 | 否 | 否 | 否 |