手机
当前位置:查字典教程网 >编程开发 >mysql数据库 >mysql占用CPU过高的解决办法(添加索引)
mysql占用CPU过高的解决办法(添加索引)
摘要:下面是MYSQL占用CPU高处理的一个例子,希望对遇到类似问题的朋友们有点启发。一般来说MYQL占用CPU高,多半是数据库查询代码问题,查询...

下面是MYSQL占用CPU高处理的一个例子,希望对遇到类似问题的朋友们有点启发。一般来说MYQL占用CPU高,多半是数据库查询代码问题,查询数据库过多。所以一方面要精简代码,另一方面最好对频繁使用的代码设置索引。

今天早上起来 机器报警 一查负载一直都在4以上

top了一下 发现 mysql 稳居 第一 而且相当稳定 我擦

重启一下mysql不行

mysql> show processlist;一下

发现xxx网站有两条 查询语句 一直 在列,我擦 该站 也就30多万条记录 量也不大 不可能是机器性能问题

忽然 记得以前在网上看过说是 tmp_table_size值太小会造成这种情况;

于是mysql -pxxx -e "show variables;" >tmp

一看是默认的32M(显示出来的是字节数)

于是翁就开心的改了起来 增加到256 重启 mysql 。。结果很失望

不行啊 还得再来

select 一下该表 发现 里面 都是论坛留言的东西 量还挺大

于是:

mysql> show columns from bbs_message;

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

| Field | Type | Null | Key | Default | Extra |

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

| msg_id | int(11) | NO | PRI | NULL | auto_increment |

| board_id | int(11) | NO | MUL | 0 | |

| parent_id | int(11) | NO | MUL | 0 | |

| root_id | int(11) | NO | MUL | 0 | |

一直在show processlist 里面出现的 就是 select * from bbs_message where board_id=xxx and parent_id=xxx

和 select * from bbs_message where parent_id=xxx

只要这两条一出现 cpu就上去了

于是 从索引入手:

增加两条索引

mysql> alter table bbs_message add index parentid(parent_id);

alter table bbs_message add index chaxunid(board_id,parent_id);

最后查看一下索引结果:

mysql> show index from bbs_message;

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

| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |

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

| bbs_message | 0 | PRIMARY | 1 | msg_id | A | 2037 | NULL | NULL | | BTREE | |

| bbs_message | 1 | rootid | 1 | root_id | A | 49 | NULL | NULL | | BTREE | |

| bbs_message | 1 | chaxunid | 1 | board_id | A | 3 | NULL | NULL | | BTREE | |

| bbs_message | 1 | chaxunid | 2 | parent_id | A | 135 | NULL | NULL | | BTREE | |

| bbs_message | 1 | parentid | 1 | parent_id | A | 127 | NULL | NULL | | BTREE | |

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

5 rows in set (0.00 sec)

退出 在 top 一下 负载一直在0.x 很稳定

【mysql占用CPU过高的解决办法(添加索引)】相关文章:

mysqlreport显示Com_中change_db占用比例高的问题的解决方法

mysql中索引使用不当速度比没加索引还慢的测试

mysql proxy问题的解决方法

Mysql CPU占用高的问题解决方法小结

linux下mysql链接被防火墙阻止的解决方法

mysql 发生系统错误1067的解决方法

Mysql中文乱码及导出sql语句和Excel的相关解决方法

mysql 双向同步的键值冲突问题的解决方法分享

mysql多次调用存储过程的问题

mysql字符集乱码问题解决方法介绍

精品推荐
分类导航