2009-06-23 6 views
0

SQL 프로파일 러를 사용하여 이상한 문제로 고민하고 있습니다. 일부 성능 테스트 스크립트를 실행하는 동안 프로파일 러를 실행하여 병목 현상을 찾습니다. 하나의 특정 문은 CPU 1407, Reads 75668 및 Duration 175와 함께 많은 시간이 걸리는 것으로 보입니다.SQL Server 프로파일 러 불일치

그러나 Management Studio에서 동일한 문을 실행하면 SQL Profiler에서 CPU 16을 반환하고 4 &의 기간 55를 읽습니다.

누구나 내가 잘못하고있는 것에 대해 나를 가리킬 수 있습니까? 나는 이것에 완전히 좌절했습니다.

감사합니다. Susan.

+0

아마도 잘못된 것은 아니며 캐싱 결과를보고있을 것입니다. 다시 프로필을 작성하면 시간이 줄어 듭니까? –

+0

팁 주셔서 감사하지만 캐시를 먼저 지 웠습니다. –

답변

3

테이블 액세스 권한이있는 스칼라 사용자 정의 함수가있을 수 있습니다.

사용되는 리소스는 프로파일 러에 의해서만 선택됩니다. SSMS는 스칼라 udf의 내부 IO 또는 CPU를 표시하지 않습니다.

예 :

+1

+1 나는 그 생각을하지 못했을 것이다. –

+2

감사합니다. 그것은 일반적인 잡았다하고 생각하면 커서가 효과적입니다 ... – gbn

+0

때로는 추적에서 이걸보고있는 것처럼 커서를 사용하고있을 수도 있습니다. exec sp_prepexec –

0

CREATE FUNCTION dbo.MyUdf (
    @param int 
) 
AS 
RETURNS int 
BEGIN 
    RETURN (SELECT MAX(foo) FROM dbo.MyOtherTable WHERE Key = @param) 
END 
GO 


SELECT 
    col1, col2, dbo.MyUdf(col3) 
FROM 
    dbo.MyFirstTable 

그러나이 설명 할 수 있습니다 시간은 ... 자바가/문제를 최대 절전 모드이었다.

0

프로파일 링 직후 엔터프라이즈 관리자에서 쿼리를 실행하면 필요한 모든 페이지가 메모리에 캐시됩니다. 이로 인해 크게 개선 될 수 있습니다.

엔터프라이즈 관리자에서 서버를 마우스 오른쪽 단추로 클릭하고 속성을 선택하면 서버에서 사용할 수있는 메모리 양을 변경할 수 있습니다. 이 번호를 한 번만 변경하면 SQL Server는 해당 캐시를 플러시합니다.