Innodb中为什么lock in share mode在show engine看不到行锁信息


这篇文章主要介绍“Innodb中为什么lock in share mode在show engine看不到行锁信息”,在日常操作中,相信很多人在Innodb中为什么lock in share mode在show engine看不到行锁信息问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Innodb中为什么lock in share mode在show engine看不到行锁信息”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!不知道有没有朋友和我一样用lock in share mode做加锁实验,但是却在show engine innodb status中看不到加锁信息,今天刚好有朋友在问@在树枝上吹风,今天就做了一下简单的debug,因为我也挺纳闷的。(我喜欢多问一个为什么也挺累的)
问题如下:
首先我开启了我的打印行锁参数,让加锁输出到日志中然后跑如下语句按理说这个时候应该在主键ID=0这一行上了LOCK_S,但是show engine innodb却看不到加锁信息如下:根本看不到加锁信息。但是我的日志中却有输出如下:开发云主机域名因此我基本断定加锁肯定是做了的,但是为什么没有输出呢?我开始怀疑是否是提前释放了或者是打印的时候过滤掉了?后来发现都不是。看了到了一个TRX_ID为422211785605248,这是只读事物的TRX_ID的形式,会不是因为应打印的时候只会打印读写的事物的锁结构信息,因为Innodb中读写事物有一个独立的链表,如果只打印这个链表上的信息就会出现这个问题。接着我做了一个事物先做了一个delete操作然后做lock in share mode语句可以看到LOCK_S结构就可以看到了,如下:再来看看我们看到了 lock mode S(LOCK_S) locks rec but not gap(LOCK_REC_NOT_GAP)的信息看来没有问题,猜测是实验是一样的,但是还是要源码验证一下。这个函数是调用的逻辑。我们这里可以看到只有状态为TRX_STATE_NOT_STARTED才会输出为not start状态。我们这里可以看到只有读写事物才会进行锁结构的输出。到此,关于“Innodb中为什么lock in share mode在show engine看不到行锁信息”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注开发云网站,小编会继续努力为大家带来更多实用的文章!

相关推荐: 怎么用OneinStack安装mysql 5.7

这篇文章主要为大家展示了“怎么用OneinStack安装mysql 5.7”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么用OneinStack安装mysql 5.7”这篇文章吧。 [root@test ~]# …

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/26 17:22
下一篇 06/26 17:26

相关推荐