上周一周都在做性能优化。
要在数据库查询之后,维护好关联关系,然后把这些数据索引到elasticsearch中。关联关系中有一对多,一对一关系。如为一对多,一为索引,多为索引下属性的一个数组;若为一对一,则前一为索引,后一为索引下类型的一个属性(为对象)。维护关联关系时,对应关系要根据外键一个个查,然后组装。通常数据库增/删/改一个实体,索引库中好几个索引都要更新数据,此时就要重新查好几次数据库,非常耗性能。
在同事的帮助下,目前性能已得到很大的提升,以前15W数据用时30分钟,目前用时不到2分钟。但还有优化空间,还在研究中。
现阶段主要优化措施如下:
1.先用new Date().getTime()找出各操作步骤最耗时的代码是什么,然后想办法优化。
2.数据库查询耗时:把数据库的单次查询或者修改都改为批量操作,然后通过程序来组装数据。批次插入或者批次修改,删除。主要用到sql in语句。
3.某个方法耗时:删掉不重要的无关代码。
4.数据库某些列建索引。
感叹:没有最快,只有更快。快成闪电。在性能优化的路上精益求精。