MySQL:修改事务隔离级别和常用语句
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_CHAIN set GLOBAL completion_type = 0; -- RELEASE set GLOBAL completion_type = 2; -- CHAIN set GLOBAL completion_type = 1;