mysql占用CPU过高的解决办法(添加索引)
所属分类:
数据库 / Mysql
阅读数:
650
收藏 0赞 0分享
下面是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多表连接查询实例讲解
本篇文章中给大家通过实例代码讲述了mysql多表连接查询的方法,有需要的朋友们可以参考学习下。
收藏 0赞 0分享
8种手动和自动备份MySQL数据库的方法
作为流行的开源数据库管理系统,MySQL的使用者众多,为了维护数据安全性,数据备份是必不可少的。本文就为大家介绍几种适用于企业的数据备份方法,需要的朋友可以参考下
收藏 0赞 0分享
使用JDBC连接Mysql数据库会出现的问题总结
这篇文章主要给大家介绍了关于使用JDBC连接Mysql数据库会出现的问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0赞 0分享
Ubuntu中MySQL的参数文件my.cnf示例详析
这篇文章主要给大家介绍了关于Ubuntu中MySQL的参数文件my.cnf的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0赞 0分享
定时备份 Mysql并上传到七牛的方法
常见的 MySQL 数据备份方式有,直接打包复制对应的数据库或表文件(物理备份)、mysqldump 全量逻辑备份、xtrabackup 增量逻辑备份等。这篇文章主要介绍了定时备份 MySQL 并上传到七牛 ,需要的朋友可以参考下
收藏 0赞 0分享
MySQL中的排序函数field()实例详解
这篇文章主要给大家介绍了关于MySQL中排序函数field()的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0赞 0分享
查看更多