请教大大门,一个查询语句如何通过memcached优化查询方法?

发布于 2021-11-10 12:09:55 字数 674 浏览 771 评论 6

我的程序是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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

剑心龙吟 2021-11-11 01:19:25

楼上各位说的有理,我回去试下

长安忆 2021-11-11 01:01:33

这个用
Redis非常合适

本宫微胖 2021-11-11 00:31:24

完全可以先在cache中incr这个数值一段时间再update db。

吃颗糖壮壮胆 2021-11-10 23:11:52

其实点击数这些没有必要实时更新的,隔几分钟再去压一次数据库不行吗?

月亮是我掰弯的 2021-11-10 22:18:29

谢谢mark35的回复,让我又理解了一部分

凌乱心跳 2021-11-10 12:12:58

点击的记录及展示需要先后操作点击表,并发大了DB压力非常大,这是memcached帮不上忙的。如果是MyISAM引擎那就更无解了,$maintable一锁表整个代码流水都得停下来排队等候。

除非升级硬件,加CPU,加磁盘阵列(RAID0+)或者SSD。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文