全表掃描導致CPU高的問題
更新時間 2023-07-04 19:44:28
最近更新時間: 2023-07-04 19:44:28
分享文章
本文介紹了MySQL全表掃描導致CPU高的問題的解決方法。
場景描述
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%。