国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

如何查看某個查詢用了多少TempDB空間

2024-07-21 02:49:29
字體:
來源:轉載
供稿:網友
如何查看某個查詢用了多少TempDB空間

    最近幫助客戶調優的過程中,發現客戶的TempDB存在非常大的壓力,經過排查是發現某些語句對TempDB的巨量使用所導致。

    在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 DBFJOIN    sys.dm_io_virtual_file_stats(2, NULL) AS FS        ON FS.file_id = DBF.file_idWHERE   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 DBFJOIN    sys.dm_io_virtual_file_stats(2, NULL) AS FS        ON FS.file_id = DBF.file_idWHERE   DBF.type_desc = 'ROWS'

 

 

    最近在一個客戶那里看到的爛查詢所導致的TempDB使用結果如下:

    image

 

    使用該查詢就可以幫助了解某個語句使用了多少TempDB。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 周至县| 神木县| 泰安市| 安达市| 吉水县| 平乐县| 米脂县| 定南县| 尼木县| 新乡市| 崇文区| 会同县| 阿荣旗| 利川市| 玛多县| 进贤县| 于都县| 莱西市| 翁牛特旗| 海南省| 蓬安县| 新安县| 平阴县| 镇宁| 黄石市| 宜阳县| 永州市| 安宁市| 嘉兴市| 康马县| 家居| 舟曲县| 大庆市| 金乡县| 武平县| 富锦市| 华容县| 红安县| 和顺县| 彭州市| 邢台市|