关系数据库MySQL版

全表扫描导致CPU高的问题

2024-06-18 03:31:41

场景描述

mysqld CPU开销 100%。

原因分析

1、通过top查询,确定是mysql进程CPU占用高,排除主机内其他进程的影响。

2、查看processlist。虽然无明显AP类查询,但有个select count(1) 的并发较高。

3、explain sql 查看执行计划,发现该sql采用全表扫描的方式。

解决方案

该SQL语句中有where uuid=$x的查询,为了避免进行全表扫描,可以为uuid增加索引。

上图加索引前,cpu的开销为200%。

sql:alter table t_xx_picture add index idx_uuid(uuid);

上图加索引后,cpu开销由200%降低至22.9%。


pYzdjcFPoo7S