提问人:TJ- 提问时间:8/25/2011 更新时间:5/30/2022 访问量:15324
在 mysql 中查找来自 query_id 的查询
Find the query from query_id in mysql
问:
我可以从 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 的查询是什么?
答:
-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=112 和 http://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 和正在执行的查询。
评论