java集群优化——ORM框架查询优化原理

        众所周知,当下的流行的企业级架构中,ORM一直是最基础的部分,在架构设计的底层。对逻辑层提供面向对象的操作支持,而事实总是和我们预想的有所偏差,ORM在提供了较好的操作体验时,也流失了一部分原生SQL的灵活性与高效性。当然,这个问题不影响我们使用ORM框架。可是却阻碍了我们站点流量的提升,尤其是在企业级的多关系复杂查询方面。性能瓶颈是不得不提的部分!

        针对此问题。大多数的ORM框架提供一个折中的解决方式,就是在查询语句中。构造一个对象。能够是一个Entity。也能够是Map等,这种方案,非常大程度上攻克了级联查询的问题,今天,我们一起来揭开这层面纱,看看这里的优化,是怎样做到的!

现象:        

先看看我们的实验中用到的几个实体



大家能够看到中间的学生实体,和其它的实体关联太多,假设我们使用一般的查询语句会变得很缓慢,我们測试在查询10条记录,不开启懒载入的前提下,10分钟这些数据都不能载入,大家看看日志文件,发的sql语句:

原因

查询语句:

From Student  where isDlete=0 

日志文件:


        这仅仅是一小部分。我们做的统计是。发出了241条查询语句,这种结果是客户不能容忍的。通过研究。我们发现直接发 from 尽管能够返回对象,可是严重拖慢查询效率,在from前加select语句。就会好非常多,由于加上select后,就会组合成join语句,最后仅仅发一天sql语句。对效率的提升是明显的!

总结:

        一个问题的解决方法,有时候会很easy,而又对自己当初的设计后悔不已。事实上这都是一个过程,一个財富。我们遇到的每个问题。都是为了让我们在以后的设计中有更好的想法。当然更重要的一点就是那别人撞的头破血流的经验作为自己的经验,提升自己的能力。这也是企业喜欢见到的!

posted on 2017-08-15 20:20  slgkaifa  阅读(197)  评论(0编辑  收藏  举报

导航