2016-10-04 57 views
0

我正在使用一种软件(HPE ALM,但这里并不重要)显示其每日使用许可证的峰值。许可令牌用于每个会话并在会话结束时发布。所有会话都存储在会话历史记录表(在MS SQL Server上)。如何处理会话统计信息的轮询间隔?

当我运行这样的查询:

SELECT TOP 1 count(*) as CountSimultaneous 
FROM td.SESSIONS_HISTORY T1, td.SESSIONS_HISTORY T2 
WHERE td.SESSIONS_HISTORY.CLIENT_TYPE = 'Application Lifecycle Management Client UI' 
and T1.START_TIME between T2.START_TIME and T2.END_TIME 
/* Add here the start/end dates */ 
GROUP BY T1.SESSION_ID 
ORDER BY CountSimultaneous DESC; 

的数字从我与许可使用标签获得略有不同(我的峰高10到20)。

根据消息灵通的用户,这种差异是由于涉及一些轮询间隔的事实。

如何工作轮询间隔方法?是否从会话历史记录表中随机抽取一些样本。例如(START_TIME - x - 5分钟)和(END_TIME - x)之间会话的前10名;当x在所考虑的时间段(昨天,上周,上个月等)中变化时。

我没有兴趣得到相同的结果比供应商。目标是理解似乎在其他工具(Analytics,LoadRunner等)中使用的这个概念。

以伪代码/ SQL为例的答案将非常值得赞赏(即使它来自另一个工具)。

+0

你,我不会提供SQL秒杀,但我会点那么与供应商达成同样高峰的唯一方法就是将您的采样率与他们的采样率相匹配。 – duffymo

+0

我对获得与供应商相同的高峰并不感兴趣。我想了解该方法如何工作,因为我只有分析方面的基本知识。为了清楚起见,我将编辑这个问题,但我并不是要求为我编写一些代码,只是一个实际的例子。 –

回答

0

它的工作太多了,画一幅画,但让我们假设你有(time, session count)数据看起来像这样:

(0, 10) 
(1, 10) 
(2, 10) 
(3, 50) 
(4, 10) 
(5, 10) 

如果您的供应商的措施每一秒,他们会看到50秒杀时间= 3.

如果你品尝或查询每五秒钟,你会看到10峰值你可能会错过在50

+0

对于我来说这并不完全清楚,因为输入数据不是(时间,会话计数),而是(会话开始日期时间,会话结束日期时间)。它不是来自时间序列数据库或采用数据流的度量,如系统度量。 –

+1

我可以使它成为时间序列数据。如果我查询DISTINCT START,则COUNT(*)计数到毫秒。您通过在日期范围之间进行计数来开始汇总。 – duffymo