Mysql(版本是8)的事务隔离级别
默认是RR:REPEATABLE-READ:可重复读
查看
当前隔离级别
全局隔离级别
修改
SELECT @@session.transaction_isolation;SELECT @@Global.transaction_isolation;-- 当前修改-- 设置成可重复读SET SESSION transaction isolation LEVEL REPEATABLE READ;-- 全局修改-- 读已提交SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;-- 读未提交SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;-- 串行化SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
事务自动提交
MySQL默认的事务是自动提交的,像update、insert语句都不用显示开启事务,默认开启事务->执行语句->自动提交
可以通过set修改为0,关闭自动提交
常用的事务控制语句
- begin:显示的开启事务
- savepoint 变量名:添加保存点
- release savepoint 变量名:删除保存点
- rollback to 变量名:回滚到某一个保存点
- rollback:回滚整个事务
- commit:提交事务
除了rollback和commit外,还有rollback work和commit work。通常是对应的,主要看MySQL的变量completion_type
completion_type有三种类型,分别是
completion_type类型 | commit work 和 rollback work |
0(NO_CHAIN) | 与commit和rollback没有区别 |
1(CHAIN) | 在执行之后会开启一个同等隔离级别的新事务,新事务能够看到当前事务的结果 |
2(RELEASE) | 在执行之后会断开当前数据库的连接 |
修改语句
SELECT @@GLOBAL.completion_type;-- NO_CHAINset GLOBAL completion_type = 0;-- RELEASEset GLOBAL completion_type = 2;-- CHAINset GLOBAL completion_type = 1;