2016-10-04 49 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