MySQL查看和修改事务隔离级别的实例讲解
时间:2020-03-05来源:电脑系统城作者:电脑系统城
查看事务隔离级别
在 MySQL 中,可以通过show variables like '%tx_isolation%'或select @@tx_isolation;语句来查看当前事务隔离级别。
查看当前事务隔离级别的 SQL 语句和运行结果如下:
- mysql> show variables like '%tx_isolation%';
- +---------------+-----------------+
- | Variable_name | Value |
- +---------------+-----------------+
- | tx_isolation | REPEATABLE-READ |
- +---------------+-----------------+
- 1 row in set, 1 warning (0.17 sec)
- mysql> select @@tx_isolation;
- +-----------------+
- | @@tx_isolation |
- +-----------------+
- | REPEATABLE-READ |
- +-----------------+
- 1 row in set, 1 warning (0.00 sec)
结果显示,目前 MySQL 的事务隔离级别是 REPEATABLE-READ。
另外,还可以使用下列语句分别查询全局和会话的事务隔离级别:
- 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 提供了 SET TRANSACTION 语句,该语句可以改变单个会话或全局的事务隔离级别。语法格式如下:
SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}
其中,SESSION 和 GLOBAL 关键字用来指定修改的事务隔离级别的范围:
- SESSION:表示修改的事务隔离级别将应用于当前 session(当前 cmd 窗口)内的所有事务;
- GLOBAL:表示修改的事务隔离级别将应用于所有 session(全局)中的所有事务,且当前已经存在的 session 不受影响;
- 如果省略 SESSION 和 GLOBAL,表示修改的事务隔离级别将应用于当前 session 内的下一个还未开始的事务。
任何用户都能改变会话的事务隔离级别,但是只有拥有 SUPER 权限的用户才能改变全局的事务隔离级别。
如果使用普通用户修改全局事务隔离级别,就会提示需要超级权限才能执行此操作的错误信息,SQL 语句和运行结果如下:
- C:\Users\leovo>mysql -utestuser -p
- Enter password: ******
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 41
- Server version: 5.7.29-log MySQL Community Server (GPL)
-
- Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
-
- Oracle is a registered trademark of Oracle Corporation and/or its
- affiliates. Other names may be trademarks of their respective
- owners.
-
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
- mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
- ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) forthis operation
- mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
- Query OK, 0 rows affected (0.00 sec)
示例 1
使用 SET TRANSACTION 语句分别修改 session 和全局的事务隔离级别SQL 语句和运行结果如下:
- mysql> select @@session.tx_isolation;
- +------------------------+
- | @@session.tx_isolation |
- +------------------------+
- | SERIALIZABLE |
- +------------------------+
- 1 row in set, 1 warning (0.00 sec)
-
- mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;
- Query OK, 0 rows affected (0.00 sec)
-
- mysql> select @@global.tx_isolation;
- +-----------------------+
- | @@global.tx_isolation |
- +-----------------------+
- | REPEATABLE-READ |
- +-----------------------+
- 1 row in set, 1 warning (0.00 sec)
还可以使用 set tx_isolation 命令直接修改当前 session 的事务隔离级别,SQL 语句和运行结果如下:
- mysql> set tx_isolation='READ-COMMITTED';
- Query OK, 0 rows affected, 1 warning (0.00 sec)
-
- mysql> select @@session.tx_isolation;
- +------------------------+
- | @@session.tx_isolation |
- +------------------------+
- | READ-COMMITTED |
- +------------------------+
- 1 row in set, 1 warning (0.00 sec)
知识点补充
Mysql事务隔离级别之读提交流程图
以上就是MySQL查看和修改事务隔离级别的实例讲解的详细内容,更多关于MySQL查看和修改事务隔离级别的资料请关注我们其它相关文章!
相关信息
-
MySQL的核心查询语句详解
一、单表查询
1、排序
2、聚合函数
3、分组
4、limit
二、SQL约束
1、主键约束
2、非空约束
3、唯一约束
4、外键约束
5、默认值
三、多表查询
1、内连接
1)隐式内连接:
2)显式内连接:
2、外连接
1)左外连接
2)右外连接
四...
2023-10-30
-
Mysql中如何删除表重复数据
Mysql删除表重复数据
表里存在唯一主键
没有主键时删除重复数据
Mysql删除表中重复数据并保留一条
准备一张表 用的是mysql8 大家自行更改
创建表并添加四条相同的数据...
2023-10-30