mysql一运行就cpu爆满_mysql服务器cpu爆满解决办法-Go语言中文社区

碰到一个mysql cpu爆满的问题,简单记录下

6b9ce65c4b0d9e3b068d41c83cda872c.png

步骤:

1、通过show processlist找到耗时最长的

mysql> show processlist;

+----+------+-----------------+------+---------+------+--------------+------------------------------------------------------------------------------------------------------+

| Id | User | Host            | db   | Command | Time | State        | Info                                                                                                 |

+----+------+-----------------+------+---------+------+--------------+------------------------------------------------------------------------------------------------------+

| 19 | root | localhost:60604 | big  | Query   | 1533 | Sending data | SELECT count(*) num,city FROM `ih_user_temp` where city in (select city from ih_user_temp where city |

| 25 | root | localhost       | NULL | Query   |    0 | NULL         | show processlist                                                                                     |

+----+------+-----------------+------+---------+------+--------------+------------------------------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

2、先杀掉该进程

mysql> kill 19;

Query OK, 0 rows affected (0.01 sec)

3、通过慢查询日志找到具体的sql语句

开启慢查询:

[mysqld]

slow_query_log=1 #开启慢查询

long_query_time=5 #慢查询时间

log-slow-queries = /var/log/mysql/slowquery.log #需有写入权限

4、使用explain 优化sql语句,参考:mysql使用explain优化sql语句

引起cpu过高的sql一般集中在order by、group by、批量insert、嵌套子查询等sql语句中

5、调整my.cnf的query_cache_size和tmp_table_size的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值