使用SQL数据库高负载Web项目

我想问一个关于使用SQL数据库进行高负载Web应用程序开发的方法的问题。 假设我们有简单的CMS系统,可以访问不同的文章。我们还想在数据库中存储文章访问量。每次用户观看文章时,此访问计数器都会增加。 在SQL数据库方面,我们在“文章”表中有“访问”整数字段,我们需要在每次用户访问文章时增加该字段。如果文章有大量并发访问,则必须正确修改当前数据库行的“访问”字段值。 我使用悲观锁定方法:“SELECT .. FOR UPDATE”。每当用户访问某篇文章时,我会对“文章”表格中的特定行进行锁定,并增加“访问”计数器。 这种方法是否正确? 我在我的项目中使用MySQL数据库。     
已邀请:
这种方法适用于中等负载站点,但最终会出现锁定问题。 在负载很高的网站上,您需要实现消息队列,并将“已访问”事件发送到队列。 脱机进程将读取队列并相应地更新列。这将允许任何时候只有一个进程访问该特定列。     
我绝对不建议在文章数据中存储汇总数据(如“访问次数”),而是使用一个单独的表格来记录每次访问的一条新记录。在那里存储时间戳,article_id,IP地址和其他数据。 这背后的基本原理是,您不必为每次访问锁定每篇文章的数据库记录,这可能会导致锁定问题/争用。 现在,当您对检索视图数感兴趣时,请在日志表上进行简单的选择。对于应该“足够好”的中型网站;随着负载的增加,您必须定期计算每篇文章的视图数量,并缓存视图计数器以加快对此数据的访问。     

要回复问题请先登录注册