全国服务热线:400-6263-721

位置:长沙达内IT教育培训学校 > 学校动态 > java数据量太大获取缓慢怎么办

java数据量太大获取缓慢怎么办

来源:长沙达内IT教育培训学校时间:2021/12/14 16:10:06

  貌似这个问题在所有开发的应用系统中都会碰到这个问题,随着时间的推移,由于需求的不断演变,项目的数据量日渐增多,功能上的效率问题也会逐步显露出来,例如统计报表、查询下载、地图渲染等功能模块,当这些功能涉及到几十张表甚至上百张表时,不难想象一次性获取所有数据的时候系统将会变得异常缓慢。

  1、首先从需求的设计和代码层次出发

  优化我们写的代码,减少没必要的资源浪费。例如频繁地使用new对象的方式以及if else和多个for循环的嵌套使用,对于大量的if和else及switch case的优化大家可以参考多个if else如何优化和多个switch case如何优化,喜欢阅读的朋友可以看下《重构——改善既有代码的设计》这本书,另外对于代码上的优化也方便于后期的维护使得代码上的可读性更高,除了逻辑控制代码,也需要注意其字符串的处理以及List的数据的处理。字符串的话,使用StringBuffer或StringBuilder,对于工具类可以通过静态方法来访问。对于List上去重或者排序之类的处理,大家可参考java8系列文章;

  优化代码中的SQL语句,这也是重中之重,当查询的数据牵扯到的数据库表比较多时。频繁地使用左连接或者内连接极大地会降低数据库查询的效率,对于SQL的优化大家可使用Explain命令进行对SQL语句的检查效率,尤其要注意主表和次表的连接关系,根据Expalin的结果可对于部分字段及数据库表增加相关的索引;

  2、数据库优化

  对于数据库的优化,在此不再做详细探讨。有时间我会再针对数据库的优化整理出一篇文章,大致的方案有如下几点

  数据库读写分离。

  数据库集群和库表散列即分区分表。

  数据库表结构优化。

  批量读取和延迟修改

  SQL语句优化。

  索引优化。

  使用存储过程代替直接操作。

  3、使用缓存

  框架自带的缓存:如果你了解hibernate和mybatis的缓存机制那就好办了,大家可参考mybatis一级缓存和二级缓存;

  缓存的方式还可以通过程序代码将数据直接保存到内存中,例如通过使用Map或者ConcurrentHashMap;

  另外还有,就是使用缓存框架:Redis、Ehcache、Memcache等。 使用缓存框架的时候,我们需要关心的就是什么时候创建缓存和缓存失效策略(注意:使用缓存的时候还要考虑到缓存服务器发生故障时候如何进行容错处理,是使用N多台服务器缓存相同的数据,通过分布式部署的方式对缓存数据进行控制,当一台发生故障的时候自动切换到其他的机器上去;还是通过Hash一致性的方式,等待缓存服务器恢复正常使用的时候重新指定到该缓存服务器。Hash一致性的另一个作用就是在分布式缓存服务器下对数据进行定位,将数据分布在不用缓存服务器上)

领取试听课
每天限量名额,先到先得

尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/1684/news/455356/违者必究! 以上就是长沙达内IT教育培训学校 小编为您整理 java数据量太大获取缓慢怎么办的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-6263-721