2011-01-11 6 views
2

時々パフォーマンスの問題が発生しているアプリケーションをサポートしています。クライアントは、ページがどのくらいの頻度で遅いかを知りたがっています。IISログパーサー - 「x秒を要する合計要求」/「合計要求」をURLでグループ化して検索する必要があります

すなわち合計時間ページは、x秒/ Iが所望のデータをフェッチするために、単一のクエリを記述したいページ

に対する要求の合計数よりも多くかかりました。

SQLのようなものはおそらく動作しますが、IISログパーサーでは動作しません。

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

答えて

5

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

  • 一つ は、ページ数をカウントする

    SELECT cs-uri-stem, COUNT(*) AS all-requests 
    FROM ex*.log 
    GROUP BY cs-uri-stem 
    
  • 一つにかかった時間に関係なく、ページあたりの要求の合計数をカウントする場所、時間、取ら> X秒

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

あなたが行った結果、JOINが必要になるでしょう:

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 
関連する問題