码迷,mamicode.com
首页 > 数据库 > 详细

阿里云RDS优化MySQL,解决数据库CPU占用高

时间:2015-09-04 19:57:35      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:

登录RDS数据库

第一步先看MYSQL的性能状况,分析是设置问题还是SQL效率问题

使用实例信息/实时性能

技术分享

发现read数据比较高,同时发现数据库CPU占用较高

再通过实时回话观察使用频繁的SQL,并且较慢的SQL

技术分享

在诊断报告中也可以找出慢SQL,优先解决执行次数多的慢SQL,有些报表只执行了1-2次可以不用关注。

将慢SQL在SQL执行窗口中执行,并查看执行计划

技术分享

对于这种TYPE=ALL全表扫描的返回rows很多的就需要进行优化

这次优化主要发现两个地方:

1. MySQL中datediff函数不会触发日期字段的索引,and datediff(stock.stockDate,:sDate) = 0 需要改成 stock.stockDate >= :sDate and stock.stockDate < :eDate

2. MySQL中in (select id from table where table.id = ?) 这种也可能不会触发索引,例如:

AND labels.LEG_ID IN (SELECT leg.id FROM tms_leg leg WHERE leg.shipment_id = (SELECT tl.shipment_id FROM tms_leg tl WHERE tl.id = ?))

改成

select * from labels, (SELECT leg.id FROM tms_leg leg WHERE leg.shipment_id = (SELECT tl.shipment_id FROM tms_leg tl WHERE tl.id = ?)) tt where labels.LEG_ID=tt.id

或者

select * from labels, tms_leg t1,tms_leg t2 where  t1.shipment_id = t2.shipment_id and t1.id = labels.leg_id and t2.id = ?

阿里云RDS优化MySQL,解决数据库CPU占用高

标签:

原文地址:http://www.cnblogs.com/zgma/p/4782188.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!