问题背景:

公司和腾迅合作开发了一款手游,需要开发一个后台管理平台来统计每日游戏数据;数据量相对比较大的集合有两个,一个是user_info,大约有2453条数据,另外一个是room_data,大约有8456条数据。

问题内容:

功能开发完毕,可是查询mongodb数据库并显示数据特别慢,用时大约10S。这是什么鬼,为何如此之慢?

问题解决办法:

首先想到的是给集合添加索引,将所操作集合添加完索引后依旧没有解决问题!汗!什么原因?还是先去问问度娘吧!问了一痛问题还是没有解决。既然度娘解决不了,还是冷静冷静自己查查代码吧。因为统计的数据比较多,所以需要多次的查询数据库,写12个方法为其服务。查询的数据需要进行去重处理,因为第一次使用mongodb数据库,所以还不是很熟,所以去重处理当时是使用PHP做的处理。正是这个去重处理要了我的亲命。先保留第一个方法,将其他所有调用的方法注释掉后发现查询时间并没有什么异常。当打开调用第二个方法的注释后发现查询时间明显的慢了下来。接下来试着修改第二个方法的去重处理交给mongodb去做,惊奇的发现时间快了好多,原来问题出在这;迅速将所有方法的去重处理都改为由mongodb去做,再次测试发现耗时为338ms,大大的节约了时间开销。

问题启示:

问题解决后得到的启示是数据库是为处理存储数据而生,因此数据库能做到的尽量让数据库去做。当然也有特例,比较mysql的多表查询还是少用,效率比较低下。