|
本帖最后由 相知犹按剑 于 2012-3-14 17:16 编辑
mysql里面的SQL语句,里面是可以加注释的
例如:
"select * from author where authorid=1"可以写成
"/* get a author */select * from author where authorid=1"
照样可以正常执行。有人说,这有鸟用啊?那好看下面:
1、在PHP里面的设定sql语句
$sql = '/* FILE: ' . __FILE__ . ', LINE: ' . __LINE__ . ' */ ' . "SELECT managerid,managername,realname FROM manager WHERE isbad=0 and managerid={$managerid}";
2、在mysql的my.cnf里面加上这两行
log_slow_queries = /var/log/mysql/slow.log
long_query_time = 10
3、重启mysql
4、# tail /var/log/slow.log
假设刚才的SQL语句是执行时间超过10秒的慢SQL,那么你可以看到类似这样的信息
SET timestamp=1331715594;
/* FILE: /var/www/jjwxc.net/www.jjwxc/backend/sms.php, LINE: 258 */ SELECT managerid,managername,realname FROM manager WHERE isbad=0 and managerid=1
5、现在有人明白意义了吗?没有明白,好,那我继续解释。
6、访问量大或者程序写得烂的时候,数据库系统往往会出现进程过多的情况,很多mysql语句排队等待执行,这个时候,找到最耗资源的SQL语句是当务之急。有了SQL注释,我们能够迅速定位到卡死系统的sql语句是哪个php文件的哪一行。然后到那里仔细推敲代码,解决问题。
7、遗憾:
在CI框架下,如果不使用query而使用Active Record,脱离了SQL语句,代码写起来很方便,就是不知道怎么加注释点了,有没有兄弟知道改进方案?
|
评分
-
查看全部评分
|