MySQL事务管理
-
DML操作语言
1.开启事务:start transaction 2.事务提交commit 3.事务回滚:rollback 4.设置回滚点:savepoint xxx 5.设置回滚:rollback to xxx
-
ACID
1.Automicoty 2.consistency 3.losation 4.durability
-
事务的隔离级别
1.read-uncommitted 2.read-committed 3.repeatable-read 4.serializable
解释:事务A 事务B都在对一个表进行操作
1.事务A读取了事务B未提交的数据->脏读;
事务A读取了事务B提交了的数据->事务B提交之前读取一次,提交之后读取一次两次数据不一致->不可重复读;
事务B插入一条数据 commit提交事务,事务A读取表中数据->事务提交前后表发生变化->幻读
2.读已提交解决了脏读的问题;
事务A只能读取事务B已经提交的数据->事务B不提交,事务A只能读取原数据;事务B提交 事务A读取新数据;
同上任然存在不可重复读和幻读
3.可重复读解决了不可重复读的问题
事务B提交事务前后,事务A看到的数据任然是相同的;
事务B插入数据提交,自己查看数据是最新的状态,事务A任然是原来的状态
解决不可重复读问题,但是事务A插入与事务B一样的数据 插入失败,原因是事务A展示的表格是一张虚幻的表,并不是真实的表
4.serializable串行化
事务B执行事务 未提交,事务A执行事务执行不了,事务Bcommit,事务A的事务开始执行;
5.区别:repeatable-read 和 serializable 前者锁的是表中的一条数据
后者锁的是整张表