编码习惯:在数据量较大的情况下

最近在负责项目的数据报表部分的工作。上一个月数据量增长的很快,也发现了自己报表代码中的几个由数据量过大引起的问题。现简单总结一下。

去重

在实际业务当中经常会遇到一个模块通过rpc向另一个模块查询信息的情况。比如:

  • 根据商品id查询商品信息
  • 根据门店id查询门店信息

这里有两点要注意:

  1. 要批量查询信息,不要在foreach中进行信息查询
  2. 在查询前要对id数组进行去重操作

分页

因为报表是对一段时间的数据进行处理,数据量可能会比较大,所以一开始就要在关键位置进行分页操作。

不对空数组进行foreach

在PHP中对空数组进行foreach操作会报warning。

所以在对数组进行foreach执行要进行empty判断。

不要再foreach中进行rpc调用,数据库操作

在接口调用的过程中,网络耗时要远大于内存中执行的操作的耗时。

所以在模块与模块之间,模块与数据库之间,需要查询信息时,要通过批量的方式进行数据查询。

  • 模块与模块之间可以通过传数组参数进行数据查询
  • 在查库的时候,可以通过in操作进行数据查询

注:千万不要在foreach中进行rpc调用,数据库操作,否则就是在给自己挖坑。

计算同类数据,使用相同的算法

实现同样的功能,尽量去复用已经实现了这个功能的代码。

如果实在不方便复用这部分代码,那也要保证使用相同的算法实现这部分逻辑。否则,就是在给自己挖坑。