SQL Server查询返回不一致的结果

时间:2017-09-21 10:05:31

标签: sql-server google-analytics ssms

我们有一个跨2台服务器负载均衡的网站。这可以在90%的时间内满足我们的运行流量,但是当我们使用特定产品进行销售时,我们偶尔会出现大量的流量峰值。

为了解决这个问题,我们在网关服务器上有一个等候室应用程序。这为每个用户分配了等候室的唯一会话ID。

如果网站上当前的会话数低于规定的阈值,则允许用户通过,否则他们将被发送到保留页面,在那里他们可以看到队列中的位置。该会话由每隔15秒ping等候室应用程序的页面上的javascript函数维护。

如果某个会话连续错过3次ping,则表示用户已离开该站点并且其会话已过期,因此下一个用户可以进入该站点。这似乎工作得很好,但是我最近发现在使用SQL Server Management Studio查看网站上当前用户数时存在一些不一致。

例如,Google Analytics将报告网站上的200个用户,该用户低于阈值。当我运行下面的脚本时,它有时会报告该网站中的所有200个用户,但通常不会报告大约100个。

SELECT Count([id]) AS In_Site
FROM [WaitingRoom].[dbo].[queueUsers]
WHERE [status] = 2

SELECT Count([id]) AS Waiting
FROM [WaitingRoom].[dbo].[queueUsers]
WHERE [status] = 1

数据库是SQL Server 2016 Express并使用SQL Server Management Studio 17

有时为什么SQL似乎无法正确返回所有用户的任何想法?

1 个答案:

答案 0 :(得分:1)

这可能更多地与Google Analytics(分析)归类为活跃用户和您的代码所做的差异有关。

查看他们的metrics信息:

  

指标值与日期范围的关系

     

报告中的指标与您用于报告的日期范围中的最后一天相关。例如,如果您的日期范围是1月1日到1月30日:

     
      
  • 1天活跃用户:1月30日(日期范围的最后一天)在您的网站或应用上发起会话的唯一身份用户数。
  •   

因此,请注意,我认为这是今天使用过的用户,而不是积极参与网站。