SELECT * FROM undo_log FOR UPDATE疑问

查前10天慢SQL,发现有一条执行47秒的关于undo_log for update的SQL,这是什么问题呢?
前面有几条update慢的SQL,请问是死锁了吗?
但是我用select * from INFORMATION_SCHEMA.DATA_LOCK_WAITS ;这语句查,当前没有发现死锁。

update…
update…
47.895227585 | SELECT * FROM undo_log WHERE branch_id = 27682610459190251 AND xid = ‘19.178.49.128:8091:27682610459189846’ FOR UPDATE;

一般来说都有锁,你看看dashboard的记录

DEADLOCKS这个表里有记录吗?

查看历史锁等待日志,SELECT * FROM INFORMATION_SCHEMA.TIDB_LOCK_WAITS

先看资源使用,然后看日志,最后看数据库里面的等待及锁

没有查到锁。

大概率是死锁了。for update就是为了加锁等待。

dashboard里能看到for update语句时就代表已经没有死锁了,因为dashboard只记录执行成功的语句。
最近几次遇到查询锁,都是只能查当前正在锁等待的,一旦解锁就查不到了。貌似是没有历史表可以查。

报错了,没有这个表。你那边是什么版本?


是autocommit下吗