逍遥天仙传,神秘军官请现身,张睿和李晟
查看事务隔离级别
在 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 关键字用来指定修改的事务隔离级别的范围:
任何用户都能改变会话的事务隔离级别,但是只有拥有 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) for this 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-8.0.19-winx64的教程图解(新手必看)
Navicat连接MySQL时报10060、1045错误及my.ini位置问题
网友评论