TiDB中事务处理疑问,为什么每句SQL语句都重新开启一个事务上下文?

如果你是非自动提交,那么在你开始一段事务时,就会创建一个事务上下文,此时该事务是会在Session变量中进行保存的,该事务未提交之前,后面再进来的 SQL 其实就是默认在这个事务之中的,直到事务提交。

关于源码的话,其实可以自己用 Begin 和 commit 这种跟着调试一次就知道了。


if s.txn.validOrPending() 就是判断当前 Session 是否存在正在进行的事务。

4 个赞