急,SQL语句导致服务器CPU超限

2016-07-07 15:18 来源:www.chinab4c.com 作者:ecshop专家

我用的是国外HOSTMONSTER的主机,对CPU有限制,今天频繁超限,经查,
主要原因是由于下面一条语句频繁执行引起的,
我查了这条语句在cls_session.php文件里,但不知道为什么今天这么频繁执行这条语句?
拜托斑竹们帮忙,谢谢了,急死我了。


DELETE FROM `maildb_maildata`.`ecs_sessions_data` WHERE expiry < 1205111969


回答:
这是删除数据库的session的,比如一个用户退出的时候,就要调用这个语句

感谢楼上的,但是为什么总是造成CPU占用很长时间呢,我查了下原程序语句如下,
我已经把这句删除上传了,过一会看看还会不会出现这个问题,

/* 随机对 sessions_data 的库进行删除操作 */
if (mt_rand(0, 2) == 2)
{
$this->db->query('DELETE FROM ' . $this->session_data_table . ' WHERE expiry < ' . ($this->_time - $this->max_life_time));
}

if ((time() % 2) == 0)
{
return $this->db->query('DELETE FROM ' . $this->session_table . ' WHERE expiry < ' . ($this->_time - $this->max_life_time));
}

return true;

经过我自己查数据库记录,
发现原因可能是数据库空了以后(即ecs_sessions_data这个表中已经没有记录了)的时候,
这句还执行操作,
所以造成了MYSQL死锁,

不知道分析的对不对,各位大虾不忙的话帮忙看下,谢谢了

现在会员也不能登陆了

看了老大们置顶的帖子,现在已经很好很OK了,

不过删除了那两句代码不知道会出现什么问题,哎~~,等老大们帮我出出主意


使用问题
如何修复数据表 例如:ecs_sessions.MYI报错
[url=thread-29206-1-1.html]http://bbs.ecshop.com/thread-29206-1-1.html[/url]

终于OK了,把原来的cls_session.php文件又重新上传了下,正常了,

原来不是cls_session.php把数据库弄坏了,

而是数据库先被破坏了,然后造成了cls_session.php执行错误。

修复了数据表后就好了。

请教版主,是怎么修复的数据表,是后台的那个功能吗。
什么数据库修复什么的那个功能是吗。

是的你的表文件现在是出问题的
另外空数据表是不会锁表的

我的也经常这样