如何确认当前事务的隔离级别?

导读

    我们知道可以在线修改全局或会话级的事务隔离级别,也可以修改时不指定GLOBAL/SESSION关键字,而只影响当前会话中的下一个事物,但怎么确认修改生效了?

    可以分别用@@global.transaction_isolation和@@ session.transaction_isolation来查看全局或会话级隔离级别,或用 @@transaction_isolation查看会话级隔离级别。也就是说:@@session.transaction_isolation和@@transaction_isolation二者等价。

在MySQL里,可以在线修改全局或会话级的事务隔离级别,例如: enter image description here

可看到全局和会话级的隔离级别是不一样的。

    另外,在修改隔离级别时若不指定GLOBAL/SESSION关键字,则只会针对当前会话的下一个事务生效,下一个事务结束后,又会恢复当前会话此前设定的隔离级别。但可能有些同学不太放心,或可能就想确认某个事务的隔离级别。接下来,一起来看下,怎么查看确认某个事务的隔离级别。这种情况下,需要借助information_schema.innodb_trx视图,看下面例子。 enter image description here enter image description here

最后几点结论:

1、执行select @@tx_isolation等同于执行select @@session.tx_isolation(或执行show variables like 'transaction_isolation'),只能看到当前会话(session)的隔离级别。

2、执行select @@global.tx_isolation查看全局隔离级别设置和执行show global variables like 'transaction_isolation'一样。

3、想要查看具体某个事务里的隔离级别,需要在information_schema.innodb_trx视图中确认。

相关文章

FAQ系列 | 修改事务隔离级别的暗门,https://mp.weixin.qq.com/s/Q6237ZCBqR4ZBERyzmYiUg

15.7.2.1 Transaction Isolation Levels,https://dev.mysql.com/doc/refman/8.0/en/innodb-transaction-isolation-levels.html

enjoy MySQL :)

This post has already been read 6860 times!

您可能对下面这些文章也感兴趣:

  1. FAQ系列 | 修改事务隔离级别的暗门 我们知道,MySQL里可以动态修改事务隔离级别,既可以加 GLOBAL 关键字直接修改全局的设置,也可以加 SESSION 关键字只修改当前会话的设置。那么,如果两个关键字都不加,会出现什么情况呢?...
  2. [MySQL FAQ]系列 — 如何查看当前最新事务ID 写在前面:在个别时候可能需要查看当前最新的事务ID,以便做一些业务逻辑上的判断(例如利用事务ID变化以及前后时 […]...
  3. FAQ系列 | SLAVE为什么一直不动了 遇到SLAVE延迟很大,binlog apply position一直不动的情况如何排查?...
  4. [MySQL优化案例]系列 — RAND()优化 众所周知,在MySQL中,如果直接 ORDER BY RAND() 的话,效率非常差,因为会多次执行。事实上, […]...
  5. [MySQL优化案例]系列 — 分页优化 通常,我们会采用ORDER BY LIMIT start, offset 的方式来进行分页查询。例如下面这个S […]...
posted @ 2021-04-18 22:52  ~*一生所爱*~  阅读(269)  评论(0编辑  收藏  举报
在国际交往中,实力 永远是维护正义的基础;国防 才是外交真正的后盾;尊严 只在剑峰之上;真理 只在大炮射程之内。