MySQL 语句执行慢的原因

长时间不返回

表级锁

MDL 读锁与写锁冲突
通过查询 sys.schema_table_lock_waits 这张表,我们就可以直接找出造成阻塞的 process id,把这个连接用 kill 命令断开即可。


等 flush

flush 操作需要关闭表,如果有查询或事务长时间打开表,就会被阻塞,可以使用 show processlist 明令查看

行锁

可以查询 sys表 sys.innodb_lock_waits

返回时间长

注意 lock in share mode 有时会比不加快,因为使用了当前读,如果有一个很长的事务,一致性读会通过 undo log 一条条执行到最开始

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。