Sql-Server
如何找出任務、會話、請求或事務目前正在使用多少 i/o 資源?
如何找出任務、會話、請求或事務目前正在使用多少 i/o 資源?
任務是指 DMV 稱為DMV sys.dm_os_tasks。會話是指 DMV sys.dm_exec_sessions
有時會話有一個請求,我的請求是指 DMV sys.dm_exec_requests 或會話可能有一個事務 - sys.dm_tran_database_transactions
如何將這些東西與I/O 使用聯繫起來?
我查看了名為DMV sys.dm_os_tasks的 DMV 。
DMV sys.dm_os_tasks有一些有趣的列,可以了解有關目前在 sql server 中執行的程序的更多資訊。
sys.dm_os_tasks - 不顯示pending_io_byte_count
但是,當我嘗試確定每個任務正在處理多少 I/O 時,以字節為單位的待處理 I/O 始終為零。
這是我嘗試監控某些 CXPACKETS WAITS 時查詢結果的範例。
Pending_IO_count 似乎沒問題,但 pending_IO_by_counts 始終為零。
有什麼替代方法?我想測量每個並行程序的 I/O 使用情況。
事實上,它可能只是每個會話或請求的 I/O 使用情況。
即使是沒有請求的會話有時也很好看,因為它們可能會阻塞其他程序。
如果您正在查找查詢的實際物理 I/O,則應在 XML 顯示計劃中查找“ActualPhysicalReads”元素:
schemas.microsoft.com/sqlserver/2004/07/showplan
但是,這些物理讀取可能只會在第一次記憶體計劃時發生。隨後的執行更有可能從記憶體中提取頁面,而不是從磁碟中。
高溫高壓