TempDB 를 사용하는 경우
1. 임시 테이블, 테이블 변수와 같은 임시 사용자 객체
2. 커서
3. 스풀이나 정렬을 위한 작업 테이블
4. 스냅샷에서 isolation 을 위한 행 버전 관리
5. 온라인 인덱스 재 구축 작업
6. MARS ( Multiple Active ResultSets, 다수의 활성 결과 집합 )
7. 트리거 등
TempDB 와 연관된 DMV 뷰
dm_db_file_space_usage : tempdb 의 각 파일에 대한 공간 사용량 정보를 반환합니다.
dm_db_session_space_usage : 각 세션에 의해 할당 및 할당 해제 된 페이지 수를 반환합니다.
dm_db_task_space_usage : 작업 별 페이지 할당 및 할당 해제를 반환합니다.
이러한 뷰를 dm_exec_session 이나 dm_exec_requests 와 같은 다른 뷰와 결합하여 실제 트랜잭션에서 tempdb 를 사용하고 있는지를 확인할 수 있습니다.
TempDB 를 사용하는 쿼리를 찾는 쿼리
이 쿼리는 현재 TempDB 를 사용하고 있는 쿼리만 출력합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | SELECT SUBSTRING(st.TEXT, dmv_er.statement_start_offset/2 + 1, (CASE WHEN dmv_er.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX),st.TEXT)) * 2 ELSE dmv_er.statement_end_offset END - dmv_er.statement_start_offset)/2) AS Query_Text, (dmv_tsu.user_objects_alloc_page_count - dmv_tsu.user_objects_dealloc_page_count) AS OutStanding_user_objects_page_counts, (dmv_tsu.internal_objects_alloc_page_count - dmv_tsu.internal_objects_dealloc_page_count) AS OutStanding_internal_objects_page_counts, dmv_er.start_time, dmv_er.open_transaction_count, dmv_er.reads, dmv_er.writes, dmv_er.logical_reads FROM sys.dm_db_task_space_usage dmv_tsu INNER JOIN sys.dm_exec_requests dmv_er ON (dmv_tsu.session_id = dmv_er.session_id AND dmv_tsu.request_id = dmv_er.request_id) INNER JOIN sys.dm_exec_sessions dmv_es ON (dmv_tsu.session_id = dmv_es.session_id) CROSS APPLY sys.dm_exec_sql_text(dmv_er.sql_handle) st WHERE (dmv_tsu.internal_objects_alloc_page_count + dmv_tsu.user_objects_alloc_page_count) > 0 | cs |
'SQL Server > SQL Server 자주보는' 카테고리의 다른 글
[MSSQL] 플랜캐시에 있는 실행계획 확인하는 방법 (0) | 2020.02.09 |
---|---|
[MSSQL] SP 가 병렬처리되는지 확인하는 방법 (0) | 2020.02.09 |
[MSSQL] 테이블 컬럼조회하기 (오라클의 DESC) (0) | 2019.03.28 |
[MSSQL] 서버, 인스턴스, 데이터베이스 명 확인하기 (0) | 2019.03.28 |
[MSSQL] 모든 데이터베이스에 접속하여 쿼리를 날리는 방법 (0) | 2019.03.26 |