
1、根据日志找到sql语句,从两点,一是索引、二是语句的写法
2、使用mysql的explain+语句形式,排查是否引用索引,通过key、extra,key表示有没有用到索引,用到的是哪个索引,像like、or等是索引失效的,extra using index表示覆盖索引,usingwhere表示where条件用到了索引,通过explain结果,修改sql语句,该加索引加索引,该修改语句修改语句
3、语句编写上,子查询、关联查询大表小表
4、部署测试
MySQL处在高负载环境下,磁盘IO读写过多,肯定会占用很多资源,必然CP会U占用过高。占用CPU过高,可以做如下考虑:
1.打开慢查询日志,查询是否是某个SQL语句占用过多资源,如果是的话,可以对SQL语句进行优化,比如优化 insert 语句、优化 group by 语句、优化 order by 语句、优化 join 语句等等;
2.考虑索引问题;
3.定期分析表,使用optimize table;
4.优化数据库对象;
5.考虑是否是锁问题;
6.调整一些MySQL Server参数,比如key_buffer_size、table_cache、innodb_buffer_pool_size、innodb_log_file_size等等;
7.如果数据量过大,可以考虑使用MySQL集群或者搭建高可用环境。
iostat -dx 1 观察磁盘读写情况,如果有十几M的读/写 就要留意了vmstat 1 看看CPU 的Idle情况 ,如果idle很低 有可能是MySQL的语句很耗CPU
top看看有啥大损耗的进程否
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)