首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SQL数据库高负载web项目

使用SQL数据库高负载web项目
EN

Stack Overflow用户
提问于 2010-11-22 05:43:34
回答 2查看 538关注 0票数 1

我想问一个关于使用SQL数据库开发highload web应用程序的方法的问题。假设我们有一个简单的CMS系统,提供对不同文章的访问。我们还希望在数据库中存储文章访问量。每次用户观看文章时,此访问计数器都会增加。

在SQL数据库方面,我们在表“文章”中有“访问”整数字段,当用户每次访问该文章时,我们需要增加该字段。当文章并发访问量较大时,需要正确修改当前数据库行的“访问”字段值。

我使用悲观锁定方法:"SELECT .. FOR UPDATE“。每次当用户访问某篇文章时,我都会锁定“文章”表中的特定行,并增加“访问”计数器。

这种方法正确吗?

我在我的项目中使用了MySQL数据库。

EN

回答 2

Stack Overflow用户

发布于 2010-11-22 06:48:04

这种方法适用于中等负载的站点,但最终会出现锁定问题。

在负载非常高的网站上,您可能希望实现一个消息队列,并将“已访问”事件发送到该队列。

离线进程将读取队列并相应地更新列。这将允许在任何时候只有一个进程访问该特定列。

票数 2
EN

Stack Overflow用户

发布于 2010-11-23 01:43:08

我绝对不建议在文章数据中存储聚合数据(如“访问次数”),而是使用一个单独的表,在该表中,您可以为每次访问记录一条新记录。在那里存储时间戳、article_id、IP地址和其他数据。这背后的基本原理是,您不必为每次访问锁定每个文章的数据库记录,这可能会导致锁定问题/争用。

现在,当您对检索视图数量感兴趣时,可以对日志表执行简单的select操作。对于应该“足够好”的中型站点;随着负载的增加,您必须定期计算每篇文章的浏览量,并缓存视图计数器以加速对此数据的访问。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4240552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档