0

次の SQL Server 2008 テーブル構造を使用して、サーバーの CPU 使用率データを収集しました。

CREATE TABLE [tbl] 
[id] BIGINT NOT NULL IDENTITY(1,1) PRIMARY KEY,
[dt] DATETIME2,   -- date/time when CPU usage was collected
[usage] TINYINT   -- value from [0 to 100]

このデータは、サーバー上で実行されているサービスによって約 1 回の頻度でログに記録されます。5分。

したがって、私の目標は、時間の経過に伴う CPU 使用率を示すグラフを描くことです。そのため、エンドユーザーはグラフの「開始日」と「終了日」を指定でき、グラフ自体は N 個のデータ ポイントに分割されます。(簡単にするために、N を 24 としましょう。)

CPU 使用率の N 個 (または 24 個) のデータ ポイントを取得してグラフにプロットする次の SQL ステートメントを思いつきました。

SELECT COUNT([usage]), SUM([usage]) FROM [tbl] 
 WHERE [dt]>='_DateDataPoint0_' AND [dt]<'_DateDataPoint1_'
UINON ALL
SELECT COUNT([usage]), SUM([usage]) FROM [tbl] 
 WHERE [dt]>='_DateDataPoint1_' AND [dt]<'_DateDataPoint2_'
--and so on, until Nth data point

万一に備えて:

"from" = June 14, 2013, 00:00:00
"to" = June 15, 2013, 00:00:00

次のデータ ポイントの日付/時刻を取得します。

_DateDataPoint0_ = 2013-06-14 00:00:00
_DateDataPoint1_ = 2013-06-14 01:00:00
_DateDataPoint2_ = 2013-06-14 02:00:00
and so on ...
_DateDataPoint23_ = 2013-06-14 23:00:00
_DateDataPoint24_ = 2013-06-15 00:00:00

最後に、私の ASP.NET スクリプトは N 組のデータを受け取ります。

Count_Usage_DataPointN
Sum_Usage_DataPointN

したがって、特定のデータ ポイントでの使用数を取得するには、次のようにします。

Usage_N = Sum_Usage_DataPointN / Count_Usage_DataPointN

まず、これが正しい方法なのか知りたいです。

そして第二に、上記の選択の奇妙な結果に興味があります。たとえば、期間が 1 時間の場合、結果として得られる CPU 使用率データのスパイクは、期間が 1 日または 1 か月の場合よりも高くなります。これは正常ですか?期間が長いほど、グラフが平坦になるようです。

4

1 に答える 1