我有个站,打开一直感觉有点偏慢,我以为是网站线路的问题。最近维护服务器发现,显示的负载一直不太正常,没人访问的时候,居然也在1-3之间这就有点奇怪了,后来发现是因为系统每分钟执行一个定时任务造成的,我将这个定时任务删除后,负载立即降到0.0-0.5左右一切恢复正常了原来这个定时任务,是我搞的发邮件的程序用php写的,流程大体是这样,比如用户在网站上进行了一些操作,系统会在mysql数据库的email表里插入一条记录然后定时任务每一分钟都去读这个表,看看有没有未被发送的邮件记录,如果有,就开始发邮件,发完了,再将这条记录的状态修改成已发送我觉得问题就出在这条sql语句上面,这个语句是每分钟读email表的,所以应该是它造成了服务器负载长期变大而且当email表里为空的时候,负载也是很大$SQLString = "select * from email where status=0 order by id asc limit 0,10";上面这条语句是读取email表的最后10条记录,条件是status字段为0
请问我现在应该怎么优化它?或者有什么其他比较好的办法?
请问我现在应该怎么优化它?或者有什么其他比较好的办法?
创建 (status,ID)的索引。
看看
你的猜测很正确,我刚找了下关于mysql的explain用法说明,不知道加上这个效果会不会好些。不过最近网站感觉负载没那么高了,等高的时候再试吧。