2011-01-11 3 views
2

가끔 성능 문제가있는 응용 프로그램을 지원하고 있습니다. 클라이언트는 페이지 빈도를 알고 싶어합니다.IIS 로그 파서 - "x 초 걸릴 총 요청 수"/ "총 요청 수"를 URL로 그룹화하여 검색해야 함

즉 총 시간이 페이지는 X의 초/페이지 내가 원하는 데이터를 가져 오기 위해 하나의 쿼리를 작성하고 싶습니다

에 대한 요청의 총 수보다 더 큰했다.

SQL에서 이와 비슷한 것은 작동하지만 IIS 로그 파서에서는 작동하지 않습니다.

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

답변

5

여기서 두 가지 질문이 필요합니다.

  • 한 페이지의 수를 계산

    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을 지원하지 않습니다.

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 
: 당신은 무엇을 할 수 있는지

가 쿼리를 SQL 데이터베이스에 두 쿼리의 결과를 가져오고 실행할 수있다

관련 문제