如何确认当前事务的隔离级别?
导读
我们知道可以在线修改全局或会话级的事务隔离级别,也可以修改时不指定GLOBAL/SESSION关键字,而只影响当前会话中的下一个事物,但怎么确认修改生效了?
可以分别用@@global.transaction_isolation和@@ session.transaction_isolation来查看全局或会话级隔离级别,或用 @@transaction_isolation查看会话级隔离级别。也就是说:@@session.transaction_isolation和@@transaction_isolation二者等价。
在MySQL里,可以在线修改全局或会话级的事务隔离级别,例如:
可看到全局和会话级的隔离级别是不一样的。
另外,在修改隔离级别时若不指定GLOBAL/SESSION关键字,则只会针对当前会话的下一个事务生效,下一个事务结束后,又会恢复当前会话此前设定的隔离级别。但可能有些同学不太放心,或可能就想确认某个事务的隔离级别。接下来,一起来看下,怎么查看确认某个事务的隔离级别。这种情况下,需要借助information_schema.innodb_trx视图,看下面例子。
最后几点结论:
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
enjoy MySQL :)
This post has already been read 6860 times!
您可能对下面这些文章也感兴趣:
- FAQ系列 | 修改事务隔离级别的暗门 我们知道,MySQL里可以动态修改事务隔离级别,既可以加 GLOBAL 关键字直接修改全局的设置,也可以加 SESSION 关键字只修改当前会话的设置。那么,如果两个关键字都不加,会出现什么情况呢?...
- [MySQL FAQ]系列 — 如何查看当前最新事务ID 写在前面:在个别时候可能需要查看当前最新的事务ID,以便做一些业务逻辑上的判断(例如利用事务ID变化以及前后时 […]...
- FAQ系列 | SLAVE为什么一直不动了 遇到SLAVE延迟很大,binlog apply position一直不动的情况如何排查?...
- [MySQL优化案例]系列 — RAND()优化 众所周知,在MySQL中,如果直接 ORDER BY RAND() 的话,效率非常差,因为会多次执行。事实上, […]...
- [MySQL优化案例]系列 — 分页优化 通常,我们会采用ORDER BY LIMIT start, offset 的方式来进行分页查询。例如下面这个S […]...