php+mysql开发过程中要有性能控制的概念

来源:互联网 发布:足球数据库软件哪个好 编辑:程序博客网 时间:2024/05/29 19:26

背景:查看服务器日志的时候,发现一个报超内存的错误。问题解决后,有了些关于节约内存,提高sql运行效率的感慨。

php性能方面

1.关于内存方面:

以前做java的,本身的垃圾回收机制让我基本不需要关注变量的销毁;php没有出了{}区域就变量就会销毁的概念。所以在运行程序报超内存错误的时候,我们除了调大应用内存之外也可以做一些处理,如:

a.一个存放大数据量的数组,直接超出内存限制的时候,可以将数组切分成小的数组;

b.循环处理一个大数组的时候,处理完一个key对应的值,可以将该key给unset掉,释放内存;

c.一个方法如果逻辑特别复杂,导致写的代码很长,产生的变量很多。这时候,就可以将代码按照变量紧挨逻辑处理的形式由应用上下文的形式,从上到下开始整理代码,完了之后,就可以在每个大变量最后应用完的地方,将该变量给unset掉;

2.关于运行方面的:

网上找了些资料,除了自己写的逻辑代码不够简洁会影响运行效率外。php的自动类型转换也是可能影响运行效率的点,php本身是弱类型的,对于变量和值很多时候没有明确的界定。这种的典范无疑就是in_array()这个判断了,详细的可见http://www.jb51.net/article/41446.htm描述。


mysql提高运行效率

1.能不排序的尽量不要order by。遇到的mysql代码里,有些地方是不需要排序的,去掉order by后运行时间往往会有较大的提升(尤其是返回结果较大的时候);

2.要有索引应用的概念,查询条件尽可能的走索引字段,查询频率高的字段要创建索引;

3.维护好自己的sql语句,尽量不要让有用到索引的sql语句中出现导致索引失效情况类似于%××××%的like查询等;

4.注意组合索引的最左原则;

5.where多条件的时候,将筛选结果能达到最小的字段条件放在最前面


目前总结的经验就这么多,随着以后更多的接触,慢慢再丰富吧。这篇主要是注意概念,一些细的点可以谷歌或百度查查,然后练练!