mysql 快速定位cpu 占比过高的sql语句

:2024年07月10日 数据库福利社
分享到:

首先通过`top`或`pidstat`命令确定CPU使用率异常高的线程,然后查询`performance_schema`或`information_schema`中的线程信息,最后分析慢查询日志以定位问题。

当MySQL数据库的CPU使用率异常升高时,定位导致问题的SQL语句可以通过以下步骤进行:

1. **使用`top`或`pidstat`命令**:

首先,可以通过`top -H -p <mysqld进程id>`或者`pidstat -t -p <mysqld进程id> 1 5`命令来确定哪个线程占用了大量的CPU资源。

2. **查询`performance_schema`或`information_schema`**:

使用以下SQL语句可以查询到具体的线程信息,包括其操作系统线程ID(`THREAD_OS_ID`)和正在执行的SQL语句:

```sql

SELECT

a.THREAD_OS_ID,

b.id,

b.USER,

b.HOST,

b.db,

b.PROCESSLIST_INFO,

b.INFO

FROM

PERFORMANCE_SCHEMA.THREADS a,

information_schema.PROCESSLIST b

WHERE

b.id = a.processlist_id AND a.THREAD_OS_ID = <具体线程id>;

```

其中 `<具体线程id>` 是从步骤1中获取的线程ID。

3. **分析慢查询日志**:

开启MySQL的慢查询日志,分析执行时间过长的SQL语句。可以通过以下命令查看慢查询日志的配置:

```sql

SHOW VARIABLES LIKE 'slow_query_log%';

```

然后使用`explain`分析慢查询日志中记录的SQL语句,找出可能的性能瓶颈。

4. **使用`SHOW PROCESSLIST`命令**:

登录到MySQL服务器,使用`SHOW FULL PROCESSLIST;`命令查看当前正在执行的所有线程,包括它们的状态和执行时间。这有助于识别长时间运行的查询。

5. **使用`SHOW PROFILE`或`SHOW PROFILES`**:

对于短时间执行但CPU使用率高的SQL,可以使用`SHOW PROFILE`或`SHOW PROFILES`来获取SQL语句的详细性能数据。

6. **检查`information_schema`中的`processlist`表**:

通过以下命令查询`processlist`表,找到CPU使用率高的线程:

```sql

SELECT * FROM performance_schema.threads WHERE thread_os_id = '1';

```

这将显示与特定操作系统线程ID相关联的MySQL线程的详细信息。

7. **使用通用日志记录**:

如果需要,可以开启MySQL的通用日志记录功能,记录所有执行的SQL语句,以便进行分析:

```sql

SET GLOBAL log_output='TABLE';

SET GLOBAL general_log=ON;

```

然后通过查询`mysql.general_log`表来查看日志记录的SQL语句。

通过这些步骤,你可以定位到导致CPU使用率高的SQL语句,并进一步分析和优化它们以降低资源消耗。

下面使用方案二来演示定位SQL

1:top查看

2:top -Hp 42977

3: 带入下面的脚本

SELECT

FROM

performance_schema.events_statements_current

WHERE

thread_id = (

SELECT

thread_id

FROM

performance_schema.threads

WHERE

thread_os_id = 10593

) ;

SELECT

a. USER,

a. HOST,

a.db,

b.thread_os_id,

b.thread_id,

a.id processlist_id,

a.command,

a.time,

a.state,

a.info

FROM

information_schema.PROCESSLIST a,

performance_schema.threads b

WHERE

a.id = b.processlist_id

AND b.thread_os_id = 10593;

来源:https://mp.weixin.qq.com/s/7w8T6fzdcsFQwZzI-W-SXQ

[我要纠错]
文:王振袢&发表于江苏
关键词: MySQL 数据库 使用率 异常 升高

来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。

点个赞
0
踩一脚
0

您在阅读:mysql 快速定位cpu 占比过高的sql语句

Copyright©2013-2024 JSedu114 All Rights Reserved. 江苏教育信息综合发布查询平台保留所有权利

苏公网安备32010402000125 苏ICP备14051488号-3技术支持:南京博盛蓝睿网络科技有限公司

南京思必达教育科技有限公司版权所有   百度统计

最热文章
最新文章
  • 卡尔蔡司镜片优惠店,镜片价格低
  • 苹果原装手机壳