当前位置:  数据库>mysql

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

    来源: 互联网  发布时间:2014-10-08

    本文导语:  下面是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 为什么会占用90% CPU ?
  • 使用MySQL Slow Log来解决MySQL CPU占用高的问题
  • MySQL中查询所有数据库占用磁盘空间大小和单个库中所有表的大小的sql语句
  • MySQL服务器进程CPU占用100%的解决方法
  • Mysql CPU占用高的问题解决方法小结
  • mySQL占用虚拟内存达8百多兆问题解决思路
  • Mysql索引类型:B-Tree索引介绍
  • mysql 添加索引 mysql 如何创建索引
  • MySQL索引基本知识
  • MYSQL索引无效和索引有效的详细介绍
  • Mysql索引类型:Hash索引介绍及举例说明
  • mysql下普通索引和唯一索引的效率对比
  • MySQL Hash索引和B-Tree索引的区别
  • Mysql索引会失效的几种情况分析
  • MYSQL索引建立需要注意以下几点细节
  • MySQL查询优化之索引的应用详解
  • Oracle与Mysql主键、索引及分页的区别小结
  • mysql 表索引的一些要点
  • mysql中索引使用不当速度比没加索引还慢的测试
  • MySQL 创建索引(Create Index)的方法和语法结构及例子
  • mysql优化之路----hash索引优化
  • 关于MySQL索引的几点值得注意的事项
  • mysql创建Bitmap_Join_Indexes中的约束与索引
  • mysql 表空间及索引的查看方法
  • MySQL索引的缺点以及MySQL索引在实际操作中有哪些事项
  • MySQL 主键与索引的联系与区别分析
  • mysql5.6.19下子查询为什么无法使用索引
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php安装完成后如何添加mysql扩展
  • 为mysql数据库添加添加事务处理的方法
  • Mysql下在某一列后即表的某一位置添加新列的sql语句
  • 怎样使RedHat8中的PHP添加MySql扩展?
  • 在jbuilder7中,如何添加mm.mysql.jar,在线等待!!!!!!!!!!!!
  • mysql数据库添加用户及分配权限具体实现
  • mysql快速添加百万条记录的语句
  • 请问SUSE Enterprise 11.0 如何添加开机启动程序呢? 比如说mysql服务, 还有自己写的shell
  • MYSQL基础之连接MYSQL、修改密码、添加用户
  • mysql安装后添加gbk字符集的方法
  • mysql数据库修改添加Date格式列的方法
  • MySQL 添加、修改、删除表的列及约束等表的定义
  • freeradius 如何在mysql添加windows vpn用户
  • mysql处理添加外键时提示error 150 问题的解决方法
  • jsp连接MySQL操作GIS地图数据实现添加point的功能代码
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • MySQL Workbench的下载安装与使用教程
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • 在Linux内安装了Mysql,无法进入Mysql.
  • VS2012+MySQL+SilverLight5的MVVM开发模式介绍
  • 怎样在linux终端输入mysql直接进入mysql?
  • Mysql设置查询条件(where)查询字段为NULL
  • c++中关于#include <mysql/mysql.h>的问题?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3