请问MySQL8.0中如何将metadata_locks的MDL列表按照时间排序?
本帖最后由 Johopig 于 2023-2-24 11:16 编辑当前借助`events_statments_current`和`events_statements_history`可以找到指定EVENT_ID的执行起始时间,但是`metadata_locks`中的OWNER_EVENT_ID似乎和前面两个表的EVENT_ID对不上,例如:
`metadata_locks`中的OWNER_EVENT_ID显示为20,并持有了SHARED_READ锁,但是在`events_statements_history`中EVENT_ID为20的语句执行的是SHOW STATUS操作,
EVENT_ID为19才是执行了 SELECT * FROM tbl 操作
不知道有什么其他办法可以将metadata_locks的MDL列表按照时间排序?
:'(:'(:'(:'( 想要按时间排序的出发点是什么,是想要解决什么问题呢 yejr 发表于 2023-2-24 21:59
想要按时间排序的出发点是什么,是想要解决什么问题呢
溯源MDL阻塞的根源SQL,按时间排序之后,第一个pending之后的mdl请求都可以过滤掉,只考虑在pending之前的mdl请求中查找根源的SQL Johopig 发表于 2023-2-25 10:46
溯源MDL阻塞的根源SQL,按时间排序之后,第一个pending之后的mdl请求都可以过滤掉,只考虑在pending之前 ...
想要释放MDL,需要让产生MDL的那个连接/线程做以下任意几个事:
1、提交/结束/回滚事务;
2、断开连接;
之后就可以释放了。 Johopig 发表于 2023-2-25 10:46
溯源MDL阻塞的根源SQL,按时间排序之后,第一个pending之后的mdl请求都可以过滤掉,只考虑在pending之前 ...
想要找到所谓的根源SQL,就需要开PFS看历史,或者开general log。 《MySQL实战》(作者:陈臣)第363-366页有讲,有具体SQL,购书链接
https://mp.weixin.qq.com/s/I5PdUkfePT8G5QoOVMvykA
页:
[1]