View 变Table 优化MySql

随着系统用户数的不断增加,MySql数据库的CPU 经常达到99%

业务部门投诉不断增加,严重影响了系统的正常运行,必须马上实施优化。

 

数据库

MySqlshow processlist来看,发现有些SQL执行的比较频繁。

这些SQL的共同点是:

1.都使用了distinctcount操作。

2.都访问了一个共同的视图。

3.这个视图中还嵌套着另外一个视图。

4.这些SQL大多相同,只是传递的参数不同而已。

 

操作系统:

nmon对操作系统的监控结果来看,系统的瓶颈主要集中在cpu上。

top 的平均负载来看最近系统的负载情况:

load average: 30.00, 32.83, 35.47

vmstat r队列一直持续非常高。

 

 

跟开发人员沟通过提出了两种优化方案。

1.修改程序,优化SQL.

2.升级硬件(原数据库跑在虚拟机上,只有4cpu

 

由于开发人员比较紧张,领导同意先升级硬件观察一下。

 

数据库升级到一个12cpu的物理机,内存增大了3倍,cpu照样99%

硬件升级方案失败。

 

业务部门投诉不断增多,领导同意优化SQL

 

那个频繁被访问的视图所涉及的业务逻辑设计有问题,短时间内无法进行优化。

由于视图所涉及的数据很少有更新。与开发人员沟通后,决定把视图变成一个物理表。

物理表数据的更新由trigger来触发。

 

这样调整后,数据库的cpu立刻降到20%左右。

 

经过几天的观察,系统的用户数量比调整前略有增加,但cpu一直稳定在8%20%之间。

并且没有在收到业务部门的投诉。至此,本次优化宣告结束。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值