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,关闭自动提交

 

 

常用的事务控制语句

  1. begin:显示的开启事务
  2. savepoint  变量名:添加保存点
  3. release savepoint  变量名:删除保存点
  4. rollback to 变量名:回滚到某一个保存点
  5. rollback:回滚整个事务
  6. 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;

 

posted @ 2021-12-06 14:03  划水的鱼dm  阅读(1560)  评论(0编辑  收藏  举报