性能优化实践

由于系统表数据量达到百万级别,所有就遇到了性能优化问题。总结解决问题思路如下:

1、从用户角度来说,界面的数据加载缓慢,超过5秒就是存在性能问题了。解决问题思路,首先,先确定瓶颈点在哪里,确定是代码的问题还是sql的问题,可以通过debug调试或者日志或者截取堆栈信息查看耗时来确定。

2、如果是代码层面的问题,考虑减少代码复杂度或者优化相关算法。比如for循环次数过多、if判断过多、重复逻辑代码过多等,可以直接获取到返回结果的跳出方法;减少和数据库的频繁连接关闭,批量提交数据等。

解决方法:减少for循环次数、if判断,针对可以确定结果的判断直接跳出方法,重复逻辑删除;数据在代码层统一处理完毕再进行批量提交。

3、如果是sql层面的问题,考虑对sql进行优化。比如是否添加必要索引,索引是否生效合理等,获取的字段是否必须,运算是不是可以不要写在sql中。

解决方法:

1)where、on、order by等后面添加索引,添加之后考虑索引不生效的情况;

索引不生效的情况,比如like以%开头、使用or、组合索引没有按顺序使用、字符串列数据没有用单引、对列数据进行运算、使用 <> 、not in 、not exist、!=,或者where后与null做判断,都会使得mysql放弃索引。

此外,如果有大批量更改数据库的数据,应该分批进行处理,例如每次提交1万条数据,直到提交完成。因为更改数据库数据会导致锁表,锁表时间过长,系统就容易崩掉。

2)获取的数据字段过多时,先关联查询出对应行的唯一标识比如id,然后再根据id获取相关字段,减少数据发送过程耗时。

 

你可能感兴趣的:(性能优化之路)