본문 바로가기
IT/MSSQL

[MSSQL]프로파일러 쿼리 사용법 예시

by 베베야 2023. 4. 15.
728x90

SQL Server Profiler 사용하여 프로시저를 실행 했을 경우 프로파일러에서 설정 값에 따라 쿼리가 어떻게 들어오는지 확인해보자.

 

사용할 프로시저

간단히 @no 값을 입력받아 결과를 보여주는 쿼리이다.

1번 프로시저 P_test001_1 실행하면 test001 테이블의 조건에 맞는 결과를 보여주고 5초를 기다린

2번 프로시저  P_test001_2 실행하여 5초를 기다린 test001 테이블의 조건에 맞는 결과를 보여준다.

 

--1번 : P_test001_1
ALTER   proc [dbo].[P_test001_1]
 @no int
AS
select * from test001 as P_test001_1 where no=@no
waitfor delay '00:00:05'

exec P_test001_2 3
--2번 :  P_test001_2
ALTER   proc [dbo].[P_test001_2]
 @no int
AS
declare @no1 int
set @no1=(select no from test001 where no=@no)
waitfor delay '00:00:05'

select * from test001 as P_test001_2 where no=@no1

프로파일러 설정

SQL Server 2019를 사용하였고 추적 속성은 템플릿중에 있는 TSQL_SPs를 사용하였다.

 

해당 템플릿을 선택하면 Duration 체크가 않되어 있는데 하단에 '모든 표시'를 눌러서 SP:Completed 쪽의 Duration만 체크해서 추가해 주도록 하자.


프로파일러 쿼리 확인

실행을 누른 프로시저를 실행해 보면 아래와 같이 프로파일러에 결과가 나오는 것을 있다.

프로시저 : exec P_test001_1 1

해당 결과를 간단히 설명하면 다음과 같다.

SQL:BatchStarting : Transact-SQL 일괄 처리가 시작 중인 경우 발생합니다.

SP:Starting : 저장 프로시저가 시작된 시기를 나타냅니다.

SP:StmtStarting : 저장 프로시저 내의 Transact-SQL 문이 시작되었음을 나타냅니다.

SP:Completed : 저장 프로시저가 완료된 시기를 나타냅니다.

EventClass TextData Duration 설명
SQL:BatchStarting SELECT @@SPID;

SQL:BatchStarting exec P_test001_1 1

SP:Starting exec P_test001_1 1
프로시저 P_test001_1 실행
SP:StmtStarting select * from test001 as P_test001_1 where no=@no
프로시저 내부 쿼리 실행
SP:StmtStarting waitfor delay '00:00:05'
프로시저 내부 쿼리 실행(대기5초)
SP:StmtStarting exec P_test001_2 3
프로시저 내부의 프로시저 실행
SP:Starting exec P_test001_2 3
프로시저 P_test001_2 실행
SP:StmtStarting set @no1=(select no from test001 where no=@no)
프로시저 내부 쿼리 실행
SP:StmtStarting waitfor delay '00:00:05'
프로시저 내부 쿼리 실행(대기5초)
SP:StmtStarting select * from test001 as P_test001_2 where no=@no1
프로시저 내부 쿼리 실행
SP:Completed exec P_test001_2 3 5001 프로시저 내부의 프로시저 완료(5초)
SP:Completed exec P_test001_1 1 10001 프로시저 완료(총10초)
반응형
그리드형

댓글