阿里云RDS优化MySQL,解决数据库CPU占用高
2015-09-04 19:05
281 查看
登录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 = ?
第一步先看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 = ?
相关文章推荐
- Mysql连接数据库
- mysql引擎
- mysql主从复制浅析(一)
- MySQL数据库入门
- 修改mysql主键的值为自增
- mysql更新记录时设置自动更新时间戳
- 怎么重置mysql的自增列AUTO_INCREMENT初时值
- mysql嵌套关联查询
- mysql日志管理
- mysqladmin创建MySQL数据库
- mysql解压版安装步骤
- mysql默认事物隔离级别实践
- MySQL 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题)
- mysql多表连接
- hibernate针对mysql5做出的优化
- MYSQL中delete删除多表数据与删除关联数据
- mysql使用source 命令乱码问题解决方法
- 解决MySQL链接不上问题
- MySQL 常用命令行
- MySQL 索引