新闻类app第二期完成之后,客户反映访问量多时会非常卡,需要进行一些数据库的优化。
之前做的项目比较多的是商城类和外卖类,同一时间访问量一般都不大,所以对数据库操作方面没有认真对待,有很大的优化空间。
主要分两个方向:代码精简优化和数据库配置优化;
代码方面关于数据库的操作很多,最典型的例子是代码开头已经查询过结果了,结果在后面又查询了一次或多次,导致了浪费,分析主要原因是来回的修改没有仔细查看之前的代码,导致了多余的查询;
还有就是统计类count的查询太多,例如点赞评论数和新闻回复数,这样导致每一页新闻列表又有十个新闻,每个新闻都要到点赞记录表和回复表中用count统计现在的数量,非常浪费。解决办法是在每篇新闻中增加这两个字段来记录当前的点赞数和回复数,在查询时直接取这两个值而不是到两个表中去统计。
一个方法中对同一个表的更新集中到一起操作,将多次操作合并成一个操作。
注意两点,
1,app已经生成并被大量使用,所以重点是针对后台查询方面的优化,但要保证返回的数据格式依然是正确的。
2,在ThinkPHP部署模式下,debug关闭的情况下,如果对数据表进行了结构改变,例如增加了两个字段,因为有数据库字段缓存的原因,框架并不会知道这两个字段的存在,所以会出现写不进去的情况,此时要把debug开启;
数据库配置方面:
重点,一定要把经常查询的字段设置为索引,差别真的会很多(具体参考http://www.cnblogs.com/fanwencong/p/5774117.html);
phpadmin会针对当前的访问情况有一个优化建议,可以参考;
数据库优化是一个很大的方向,这里只是针对当前的规模进行了一些效果比较明显的应急性优化,写的很低级,以后会慢慢总结。