在 mysql 中查找来自 query_id 的查询

Find the query from query_id in mysql

提问人:TJ- 提问时间:8/25/2011 更新时间:5/30/2022 访问量:15324

问:

我可以从 mysql 查询 id 中找到确切的查询吗?

这是MySQL中“SHOW ENGINE INNODB STATUS”的一部分:

MySQL thread id 1106, query id 1360 localhost 127.0.0.1 test2
---TRANSACTION 0 19491, not started, OS thread id 2960035840

有没有办法找到 id 为 1360 的查询是什么?

MySQL 死锁 工作台

评论

1赞 Anish Ramaswamy 9/27/2019
你找到一种方法了吗?

答:

-1赞 bpgergo 8/25/2011 #1

有人说打开“常规日志”,你会按 ID 找到你的查询 http://forums.mysql.com/read.php?22,419784,419896#msg-419896

-1赞 bpgergo 8/25/2011 #2

刚刚将这一行添加到 my.cnf 中

log=/tmp/mysql_query.log

然后重新启动 mysql 服务(/etc/init.d/mysql stop /etc/init.d/mysql start)

然后尾随日志文件。似乎里面有一个查询ID!

110825 15:07:49    36 Connect   ***@localhost on ***
...
           36 Query SELECT * FROM genre g LIMIT 0,1000
           36 Quit  

另请参阅 http://www.jeff-barr.com/?p=112http://dev.mysql.com/doc/refman/5.1/en/query-log.html

评论

0赞 TJ- 8/25/2011
其中哪一个是查询 ID?
0赞 bpgergo 8/25/2011
我活着“36”是查询 ID
0赞 bpgergo 8/25/2011
我认为这是希望有帮助的格式cat /tmp/mysql_query.log | egrep "^\s+([0-9]+) Query\s+SELECT"
0赞 TJ- 8/25/2011
对不起?我认为“36”是mysql线程ID。
3赞 bpgergo 8/25/2011
哎呀,对不起。无论如何,我试图找到有关查询日志字段的一些信息。虽然没有发现任何有用的东西。所以恐怕你必须重现你的死锁,然后检查日志以确保,但我相信“36”是查询id而threadid不在查询日志
-1赞 mohsin139 2/22/2015 #3

您可以使用以下命令: 显示进程列表;

它将为您提供所有当前正在运行的进程及其查询 ID 和正在执行的查询。