admin

DB字段增加

sql

假设我在某个网站上有一篇文章,并且想跟踪该文章的观看次数。在“文章”表中,有PK ID-int,名称-nvarchar(50)和ViewCount-
int。每次查看页面时,我都会增加ViewCount字段。我担心在更新字段时发生冲突。我可以在一个存储过程中使用类似这样的事务来运行它:

CREATE PROCEDURE IncrementView
(
    @ArticleID int
)
as

BEGIN TRANSACTION

UPDATE Article set ViewCount = ViewCount + 1 where ID = @ArticleID

IF @@ERROR <> 0
BEGIN
    -- Rollback the transaction
    ROLLBACK

    -- Raise an error and return
    RAISERROR ('Error Incrementing', 16, 1)
    RETURN
END

COMMIT

我担心的是,我最终将无法在此模型中计算PageViews。另一个可能的解决方案是模型的日志类型,在该模型中,我实际上将视图记录到文章,并使用功能和视图的组合来获取关于文章的视图数的数据。


阅读 152

收藏
2021-06-07

共1个答案

admin

可能更好的模型是每小时在某个地方的应用程序中缓存视图数,然后以批处理方式更新它们。

- 编辑:

要详细说明,一个简单的模型可能是:

  1. 对于给定页面,每个页面加载都会增加一个静态哈希图。同样,在每个负载上,检查自“上次更新”以来是否经过了足够的时间,如果是,则执行更新。

  2. 棘手,将基本值放在asp.net缓存(http://msdn.microsoft.com/en-us/library/aa478965.aspx)中,并且在超时时,[按照说明实现缓存删除处理程序在链接中]进行更新。将超时时间设置为一个小时。

在这两种模型中,您都将拥有要计数的静态页面图;您将更新每个视图,并且还将使用此视图以及缓存的数据库数量来获取当前的“实时”计数。

2021-06-07