自己原文公众号:
https://mp.weixin.qq.com/s/0_Sl8ok8PFu2FrjLe3THkg
在以前发表公众号基础上继续完善一下mysql的dml和缓存的关系。(5.7)

第二张图也是以前的。一旦发生数据变化则没有缓存了,重新计算。那么翻过来也可以这样说,如果发生了重新计算,说明了数据一定有DML,也就是并发、或者非并发写。总之一定是写了。
今天说点不一样的。上次我这都是在一个会话下进行的。一次偶然想法,那么在其他会话中是不是一样缓存了呢?要知道在Oracle中 A用户执行select * from t(t是A的)和在B用户下执行select * from a.t这个是要硬解析,而且游标也不一样了。

来个实验。先是自己会话(ID号是65) 步骤是:
1读硬盘
2缓存到了
3更新数据
4无法缓存读硬盘
5缓存到了
自己会话(ID号是67) 步骤是
1读硬盘
2缓存到了
3切换会话,而且是新的会话(因为有可能会说老的会话缓存了,看能不能是吧新的会话)
4不同会话缓存到了
再说一下锁。一定是多会话。
第二个会话被第一个阻塞了22秒

结论是会话67的执行时间不记录,只有会话69记录了被阻塞时间。
如果超时呢?

