2

パフォーマンスの問題が時々発生するアプリケーションをサポートしています。クライアントは、ページが遅い頻度を知りたがっています。

つまり、ページが x 秒を超えてかかった合計時間/ページのリクエストの合計数

目的のデータを取得するための単一のクエリを作成したいと思います。

SQL ではおそらく機能しますが、IIS ログ パーサーでは機能しません。

select URL, count(case when time > 100  then 1 else null end), count(*)
from   table1
group by URL
4

1 に答える 1

5

ここでの問題は、2つのクエリが必要なことです。

  • 所要時間に関係なく、ページあたりのリクエストの総数をカウントするための1つ

    SELECT cs-uri-stem, COUNT(*) AS all-requests 
    FROM ex*.log 
    GROUP BY cs-uri-stem
    
  • 所要時間がX秒を超えるページ数をカウントするための1つ

    SELECT cs-uri-stem, COUNT(*) as total-requests
    FROM ex*.log
    WHERE time-taken > 1000 <- time_taken is milliseconds
    GROUP BY cs-uri-stem 
    

あなたが求めている結果には、参加が必要です。

SELECT a.cs-uri-stem, COUNT(*) as total-requests, b.all-requests
FROM ex*.log AS a
JOIN (
    SELECT cs-uri-stem, COUNT(*) AS all-requests 
    FROM ex*.log 
    GROUP BY cs-uri-stem
) AS b ON b.cs-uri-stem = a.cs-uri-stem
WHERE a.time-taken >1000 
GROUP BY a.cs-uri-stem 

残念ながら、LogParserではJOINはサポートされていません。

できることは、両方のクエリの結果をSQLデータベースにインポートし、そこでクエリを実行することです。

SELECT a.cs-uri-stem, COUNT(*) as total-requests, b.all-requests
FROM long_running_pages AS a
JOIN all_pages_grouped b ON ( a.cs-uri-stem = b.cs-uri-stem)
GROUP BY a.cs-uri-stem 
于 2011-01-12T02:14:30.980 に答える