LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

使用SQL Server2005触发器做站点IP、PV预统计

admin
2011年3月13日 0:31 本文热度 2978


上图是一个WEB站点访问日志表,记录了访问对象的相关信息。现在要求增加一个站点每天的IP、PV统计功能,数据量小时直接对Web_AccessLogTB表中的数据进行统计即可,若数据量比较大,这样做就不合适了。解决方法是进行预统计:在用户查看统计之前就已经预先统计好了,用户查看时只是显示下结果而已。

预统计的方式又可分成两种:同步或异步。同步可以写个存储过程来完成,添加访问日志的同时进行预统计;异步是将添加访问日志和预统计两个过程分开,后者可由其他程序来完成,例如Windows服务、触发器等等。显然异步比较合适,下边我们就用触发器来完成。



上图为预统计表,记录每天的IP和PV量。现在要解决的一个问题是IP的统计,到目前为止,每个IP都必须先扫描一次Web_AccessLogTB表,才知道它是不是首次访问,是则IPCount字段加1,这样效率太差了。我们再建一个辅助表(Web_IPLogTB)来解决这个问题:



Web_IPLogTB表记录每天的访问IP,一个IP只记录一次,每天清空一次,这样扫描就快多了。下边是我们的触发器:

 程序代码
Create TRIGGER [Web_UpdateIPAndPVTG]
   ON  [dbo].[Web_AccessLogTB]
   AFTER Insert
AS
BEGIN
    IF @@rowcount>0
    BEGIN
        DECLARE @clientip nvarchar(50), @recdatetime datetime
        DECLARE @ipcount int
        Select @clientip=ClientIP,@recdatetime=RecDateTime FROM inserted
        SET @recdatetime=DATEADD(day,DATEDIFF(day,0,@recdatetime),0)
        
        IF NOT EXISTS(Select TOP 1 * FROM Web_AccessLog2TB Where RecdateTime=@recdatetime)
        BEGIN--新增
            Insert INTO Web_AccessLog2TB(RecDateTime,IPCount,PVCount) VALUES(@recdatetime,1,1)
            TRUNCATE TABLE dbo.Web_IPLogTB --每天清空
            Insert INTO dbo.Web_IPLogTB(RecDateTime,ClientIP) VALUES(@recdatetime,@clientip)
        END
        ELSE
        BEGIN
            Select @ipcount=count(1) FROM Web_IPLogTB Where RecdateTime>=@recdatetime AND ClientIP=@clientip
            IF @ipcount=0
            BEGIN--更新IP和PV
                Update Web_AccessLog2TB SET IPCount=IPCount+1,PVCount=PVCount+1 Where RecdateTime=@recdatetime
                Insert INTO Web_IPLogTB(RecDateTime,ClientIP) VALUES(@recdatetime,@clientip)                
            END
            ELSE--只更新PV
                Update Web_AccessLog2TB SET PVCount=PVCount+1 Where RecdateTime=@recdatetime
        END            
    END
END

该文章在 2011/3/13 0:31:21 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved