• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > mysql占用CPU过高的解决办法(添加索引)

mysql占用CPU过高的解决办法(添加索引)

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mysql cpu占用过高,mysql占用cpu,mysql cpu高,mysql cpu 100%,mysql索引类型等相关知识,希望本文的分享对您有所帮助
下面是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 很稳定 </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • mysql占用CPU过高的解决办法(添加索引)
  • Mysql CPU占用高的问题解决方法小结

相关文章

  • 2018-12-05oracle 触发器 实现出入库
  • 2018-12-05Oracle数据库的备份与恢复
  • 2018-12-05SQL对冗余数据的删除重复记录只保留单条的说明
  • 2018-12-05有关Oracle数据库的备份情况
  • 2017-05-11MySQL配置文件my.cnf中文版对照
  • 2018-12-05MySQL5.7.19在Linux下安装出现的问题解决图文详解
  • 2017-05-11mysql insert语句操作实例讲解
  • 2018-12-05MySQL插入生僻字失败的处理方法(图)
  • 2018-12-05sql2005开发版 没有任何功能可以安装
  • 2017-05-11mysql下float类型使用一些误差详解

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 细说mysql数据库的数据类型
    • 有木有哪位前辈用mysql直接连接android的
    • Oracle轻松取得建表和索引的DDL语句
    • SQL语句练习实例之七 剔除不需要的记录行
    • mysql中关于char和varchar的区别
    • MySQl在开发和生产不同环境下的索引对比
    • 详细介绍mysql 协议的ColumnCount包及解析
    • Mysql学习笔记(四)聊聊数据库索引
    • 格式导致的Excel导入sql出现异常的解决方法
    • Window10下安装 mysql5.7图文教程(解压版)_MySQL

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有