影响MySQL性能的相关因素
1.商业需求对性能的影响
比如要求实时统计,那数据库访问的频率会非常高,对数据库的压力也会比较大
2.系统架构及实现对性能的影响
如果架构和设计不够充分,将所有的请求都直接到数据库,这样数据库压力就会大,所有我们应该尽量减少访问数据库的请求。
1)不适合在数据库中存放的数据
- 二进制多媒体数据:非常消耗空间资源,并且数据库处理文件的时候也会消耗大量的数据库主机CPU资源。一般使用文件服务器解决,如果阿里云、腾讯、七牛的OSS。
- 流水队列数据:产生数据的速度非常快,会频繁操作数据库。一般使用专门的队列软件解决
- 超大文本数据
2)是否合理的利用了应用层的Cache机制?
- 系统各种配置及规则数据:变动频率低,访问频率高适合存Cache
- 活跃用户的基本信息数据:用户很少去修改自己的信息,但是系统获取这些数据是频繁的
- 准实时的统计信息数据:
- 其他一些访问频繁但变更较少的数据
3)过度依赖数据库SQL语句的功能导致造成数据库操作效率低下
- 并不是SQL语句越长就越厉害,反而会导致效率低
4)其他不合理的架构导致性能低下
- Cache系统的不合理利用导致Cache命中率低下造成数据库访问量的增加,同时也浪费了Cache 系统的硬件资源投入;
- 过度依赖面向对象思想,对系统带来不必要的压力.
- 对可扩展性的过渡追求,促使系统设计的时候将对象拆得过于离散,造成系统中大量的复杂Join 语句,而MySQLServer在各数据库系统中的主要优势在于处理简单逻辑的查询,这与其锁定的机制也有较大关系;
- 对数据库的过渡依赖,将大量更适合存放于文件系统中的数据存入了数据库中,造成数据库资源的浪费,影响到系统的整体性能,如各种日志信息;
- 过度理想化系统的用户体验,使大量非核心业务消耗过多的资源,如大量不需要实时更新的数据 做了实时统计计算。
3.设计对系统的性能影响
不合理的表设计可能会增加数据库的压力,从而影响性能。
类型越精确越优秀,类型越小越好。
4.硬件环境对系统性能的影响
服务器性能的优劣也会影响数据库的性能
5.Query语句对系统性能的影响
这个是重点放在后面
综合考虑
在整个系统的性能优化中,如果按照百分比来划分上面几个层面的优化带来的性能收益,可以得出大概如下的数据:
- 需求和架构及业务实现优化:55%
- Query 语句的优化:30%
- 数据库自身的优化:15%
数据库应用系统的优化,实际上是一个需要多方面配合,多方面优化的才能产生根本性改善的事情。
总结如下:商业需求合理化,系统架构最优化,逻辑实现精简化,硬件设施理性化。