SQLSERVER 의 어떤 조회 가 얼마나 많은 TempDB 공간 을 사 용 했 는 지 어떻게 봅 니까?

1644 단어 sqlTempDB
SQL Server 에서 TempDB 는 다음 과 같은 세 가지 상황 에서 사용 할 수 있 도록 책임 집 니 다.
내부 사용(정렬,hash join,work table 등)
외부 사용(임시 표,표 변수 등)
행 버 전 관리(낙관적 병행 제어)
 
    한편,내부 사용 에 있어 일부 복잡 한 조회 에서 대량의 병행,정렬 등 작업 과 관련 되 기 때문에 대량의 메모리 공간 이 필요 하 다.모든 조 회 는 시작 할 때 SQL Server 가 얼마나 많은 메모리 가 필요 한 지 예측 하고 구체 적 인 실행 과정 에서 주어진 메모리 가 부족 하면 더 많은 부분 을 TempDB 로 처리 해 야 한다.이른바 Spill to TempDB 다.
    다음 문 구 를 통 해 어떤 조회 가 TempDB 에 얼마나 많은 읽 기와 쓰 기 를 가 져 왔 는 지 관찰 할 수 있다.

DECLARE @read  BIGINT, 
    @write BIGINT
;    
SELECT @read = SUM(num_of_bytes_read), 
    @write = SUM(num_of_bytes_written) 
FROM  tempdb.sys.database_files AS DBF
JOIN  sys.dm_io_virtual_file_stats(2, NULL) AS FS
    ON FS.file_id = DBF.file_id
WHERE  DBF.type_desc = 'ROWS'

--           

SELECT tempdb_read_MB = (SUM(num_of_bytes_read) - @read) / 1024. / 1024., 
    tempdb_write_MB = (SUM(num_of_bytes_written) - @write) / 1024. / 1024.,
    internal_use_MB = 
      (
      SELECT internal_objects_alloc_page_count / 128.0
      FROM  sys.dm_db_task_space_usage
      WHERE  session_id = @@SPID
      )
FROM  tempdb.sys.database_files AS DBF
JOIN  sys.dm_io_virtual_file_stats(2, NULL) AS FS
    ON FS.file_id = DBF.file_id
WHERE  DBF.type_desc = 'ROWS'

    최근 한 고객 에 게 서 본 엉터리 조회 로 인 한 TempDB 사용 결 과 는 다음 과 같다.

 
    이 검색 어 를 사용 하면 어떤 문구 가 TempDB 를 얼마나 사 용 했 는 지 알 수 있다.

좋은 웹페이지 즐겨찾기