一套适用于大部分系统的优化流程

常规系统优化流程:

1.0 应用程序优化

分析应用程序等GC日志,查看程序是否有优化等空间,或者某些业务代码是否可以进行优化,这个涉及的面比较广。

1.1 数据表索引优化

WEB服务器的CPU闲来无事,但数据库服务器的CPU使用率高居不下。经过初步分析,发现瓶颈在数据库。

解决方案:监控数据库的访问,整理出那些耗时的SQL,并且进行SQL查询分析。根据分析结果,对数据表索引进行重新整理。同时也对数据库本身的参数设置进行了优化。

1.2 多点部署+负载均衡

慢慢的,访问速度又不行了,这次是WEB服务器压力很大,数据库服务器相对空闲。经过分析,发现是系统并发用户数太多,单WEB服务器不能够支持如此众多的并发请求。

解决方案:使用分布式多点部署的方案,客户端通过Nginx等负载均衡工具进行请求分发。

1.3 数据分片

多点部署之后,系统基本能应对客户需求。但是经过一定的时间后,系统的服务速度明显又慢下来了,增加WEB服务器也不能解决问题了。分析发现系统瓶颈又回到了数据库服务器。SQL执行时间越来越长,而且无法优化。原因也很简单,数据量太大。

解决方案:进行数据分片,目前市面上的分库分表中间件还是挺多的,目前比较推荐的方式有mycat、sharding-jdbc(工具就不做太多的介绍了)。数据分片的重点在于定制出合理的分片策略。
常用分片策略:

(1)、根据主键进行分片:能够实现最平均的分配方法,每生成一条新数据,会依次保存到下一个数据表中(主键自增情况)。

(2)、根据用户ID进行分配:能够确保同一个用户的所有数据保存在同一个数据表中。如果经常按用户id查询数据,这是比较经济的一种做法。
(3)、根据时间进行分配:这种对于那些经常只需要查询一个月内、一年内等业务查询相对比较友好。

猜你喜欢

转载自blog.csdn.net/qq_33404395/article/details/85317915