找出哪个查询是一个知道它的PID的过程

问题描述 投票:1回答:2

通过使用htop命令,我可以看到一个mysqld进程占用的CPU占用率超过500%,其中的PID是例如20456 htop只显示命令/ usr / bin / mysqld旁边的

现在,我想做的是检查PID制作的查询是什么?我的网站做了很多与数据库相关的事情,我想知道什么工作导致这种高CPU使用率。有人能告诉我的方式吗?

我尝试在mysql中显示完整的进程列表,但它没有显示该列表中的PID,所以我不知道要关注什么。

mysql debugging cpu-usage
2个回答
1
投票

当我查看threads view manual时,MySQL 5.7 / 8.0接口有本机支持

THREAD_OS_ID

底层操作系统定义的线程或任务标识符,如果有的话:

THREAD_OS_ID包含操作系统线程ID。

对于Windows,THREAD_OS_ID对应于Process Explorer(https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx)中可见的线程ID。

对于Linux,THREAD_OS_ID对应于gettid()函数的值。例如,使用perf或ps -L命令或proc文件系统(/ proc / [pid] / task / [tid])公开此值。有关更多信息,请参见perf-stat(1),ps(1)和proc(5)手册页

除此视图还包含一个PROCESSLIST_ID列,因此您可以使用information_schema.processlist加入它以了解哪个查询正在使用哪个OS PID


0
投票

在查询运行时尝试从root登录 -

SELECT * FROM information_schema.innodb_trx;

?

查看正在运行的查询的内容?

© www.soinside.com 2019 - 2024. All rights reserved.