请教大大门,一个查询语句如何通过memcached优化查询方法?
我的程序是dedecms5.7的,现在网站流量很大,但我要在页面中调用点击数,可我一加上这功能就逛吃cpu一直到100%,希望各位有空余时间帮我看下如何通过memcached优化下面的这个语句:
if(isset($aid)) $arcID = $aid; $arcID = $aid = empty($arcID)? 0 : intval(preg_replace("/[^d]/",'', $arcID)); $maintable = '#@__archives';$idtype='id'; if($aid==0) exit(); if(!empty($maintable)) { $dsql->ExecuteNoneQuery(" UPDATE `{$maintable}` SET click=click+1 WHERE {$idtype}='$aid' "); } if(!empty($view)) { $row = $dsql->GetOne(" SELECT click FROM `{$maintable}` WHERE {$idtype}='$aid' "); if(is_array($row)) { echo "document.write('".$row['click']."');rn"; } }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
楼上各位说的有理,我回去试下
这个用
Redis非常合适
完全可以先在cache中incr这个数值一段时间再update db。
其实点击数这些没有必要实时更新的,隔几分钟再去压一次数据库不行吗?
谢谢mark35的回复,让我又理解了一部分
点击的记录及展示需要先后操作点击表,并发大了DB压力非常大,这是memcached帮不上忙的。如果是MyISAM引擎那就更无解了,$maintable一锁表整个代码流水都得停下来排队等候。
除非升级硬件,加CPU,加磁盘阵列(RAID0+)或者SSD。