您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“數(shù)據(jù)庫中怎么查看SQLSERVER中某個(gè)查詢用了多少TempDB空間”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“數(shù)據(jù)庫中怎么查看SQLSERVER中某個(gè)查詢用了多少TempDB空間”這篇文章吧。
在SQL Server中,TempDB主要負(fù)責(zé)供下述三類情況使用:
內(nèi)部使用(排序、hash join、work table等)外部使用(臨時(shí)表,表變量等)行版本控制(樂觀并發(fā)控制) 而對于內(nèi)部使用,一些比較復(fù)雜的查詢中由于涉及到了大量的并行、排序等操作時(shí)就需要大量的內(nèi)存空間,每一個(gè)查詢在開始時(shí)都會由SQL Server預(yù)估需要多少內(nèi)存,在具體的執(zhí)行過程中,如果授予的內(nèi)存不足,則需要將多出來的部分由TempDB處理,這也就是所謂的Spill to TempDB。
通過下述語句可以觀察到某個(gè)查詢對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'
以上是“數(shù)據(jù)庫中怎么查看SQLSERVER中某個(gè)查詢用了多少TempDB空間”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。