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초) |
반응형
그리드형
'IT > MSSQL' 카테고리의 다른 글
[MSSQL] SELECT 쿼리 복사 후 자동 정렬(SSMS 개행문자 옵션 설정) (0) | 2023.08.13 |
---|---|
[MSSQL] 프로시저(SP) 생성시간 및 수정시간 확인방법 (0) | 2023.08.13 |
[MSSQL]실행계획을 2가지 방식으로 가져가게 하기위한 방법/분기처리 (0) | 2023.04.15 |
[MSSQL] MDF, LDF 데이터 파일 물리적 위치변경 (0) | 2023.04.15 |
[MSSQL] MAXRECURSION 힌트(무한 루프 진입방지 제한) (0) | 2023.04.15 |
댓글