怎么在MySQL中查看和修改事务隔离级别

  介绍

今天就跟大家聊聊有关怎么在MySQL中查看和修改事务隔离级别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

<强>查看事务隔离级别

在MySQL中,可以通过显示变量如& # 39;% tx_isolation % & # 39;或选择@@tx_isolation;语句来查看当前事务隔离级别。

查看当前事务隔离级别的SQL语句和运行结果如下:

mysql>, show  variables  like  & # 39; % tx_isolation % & # 39;;   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   | |,Variable_name  Value ,,,, |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   | |,tx_isolation  REPEATABLE-READ  |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   1,row 集,拷贝,1,warning (0.17,秒)   mysql>, select  @@tx_isolation;   + - - - - - - - - - - - - - - - - - - +   | |,@@tx_isolation    + - - - - - - - - - - - - - - - - - - +   | |,REPEATABLE-READ    + - - - - - - - - - - - - - - - - - - +   1,row 集,拷贝,1,warning  (0.00, sec)

结果显示,目前MySQL的事务隔离级别是可重复读。

另外,还可以使用下列语句分别查询全局和会话的事务隔离级别:

SELECT  @@global.tx_isolation;   SELECT  @@session.tx_isolation;

提示:在MySQL 8.0.3中,tx_isolation变量被transaction_isolation变量替换了。在MySQL 8.0.3版本中查询事务隔离级别,只要把上述查询语句中的tx_isolation变量替换成transaction_isolation变量即可。

<强>修改事务隔离级别

MySQL提供了设置事务语句,该语句可以改变单个会话或全局的事务隔离级别。语法格式如下:

设置事务隔离级别(会话|全球){读未提交|读承诺|可重复读| SERIALIZABLE}

其中,会话和全球关键字用来指定修改的事务隔离级别的范围:

<李>

会话:表示修改的事务隔离级别将应用于当前会话(当前cmd窗口)内的所有事务;

<李>

全球:表示修改的事务隔离级别将应用于所有会话(全局)中的所有事务,且当前已经存在的会话不受影响;

<李>

如果省略会话和全球,表示修改的事务隔离级别将应用于当前会话内的下一个还未开始的事务。

任何用户都能改变会话的事务隔离级别,但是只有拥有超级权限的用户才能改变全局的事务隔离级别。

如果使用普通用户修改全局事务隔离级别,就会提示需要超级权限才能执行此操作的错误信息,SQL语句和运行结果如下:

C: \ \用户leovo> mysql  -utestuser  - p   Enter 密码:* * * * * *   Welcome 用,MySQL 监控只Commands 最终获得with ,趁机\ g。   Your  MySQL  connection  id  is  41   版本:Server  5.7.29-log  MySQL  Community  Server  (GPL)   ,   Copyright  (c), 2000年,2020年,Oracle 和/或its 子公司只All  rights 保留。   ,   Oracle  is  a  registered  trademark  of  Oracle  Corporation 和/或它的   子公司只Other  names  may  be  trademarks  of  their 各自   的主人。   ,   Type  & # 39;帮助;& # 39;,趁机& # 39;\ h # 39;, for 帮助只Type  & # 39; \ c # 39;,用clear 从而current  input 语句。   ,   mysql>, SET  GLOBAL  TRANSACTION  ISOLATION  LEVEL  READ 未提交;   ERROR  1227, (42000):, Access 否认;,你need  (at  least  one ),从而SUPER 特权(s), for 却;能够操作   mysql>, SET  SESSION  TRANSACTION  ISOLATION  LEVEL  READ 未提交;   Query 好吧,,0,rows  affected  (0.00, sec)

示例1

使用设置事务语句分别修改会议和全局的事务隔离级别SQL语句和运行结果如下:

mysql>, select  @@session.tx_isolation;   + - - - - - - - - - - - - - - - - - - - - - - - - +   | |,@@session.tx_isolation    + - - - - - - - - - - - - - - - - - - - - - - - - +   |,SERIALIZABLE ,,,, |   + - - - - - - - - - - - - - - - - - - - - - - - - +   1,row 集,拷贝,1,warning (0.00,秒)      mysql>, SET  GLOBAL  TRANSACTION  ISOLATION  LEVEL  REPEATABLE 阅读;   Query 好吧,,0,rows  affected (0.00,秒)      mysql>, select  @@global.tx_isolation;   +-----------------------+   | |,@@global.tx_isolation    +-----------------------+   |,REPEATABLE-READ ,, |   +-----------------------+   1,row 集,拷贝,1,warning  (0.00, sec)

怎么在MySQL中查看和修改事务隔离级别