2011-03-29 66 views
0

我做了一個SQL Server 2008的壓力測試,我想知道什麼是因爲使用臨時表和變量的數據流到tempdb。SQL Server 2008:A *數據文件IO計數器* SQL Server的

的統計數據也顯示在活動監視器:

enter image description here

是否有可能以某種方式來記錄數據和事後分析的呢? 我有2例記:

  1. 記錄的SQL Server的計數器(我不知道這是它的名字)
  2. 記錄某種方式從活動監視器
+0

'select * from sys.fn_virtualfilestats(db_id(),null)'對你有什麼好處? – 2011-03-29 16:36:41

回答

2

寫入到數據庫中不等於1比1與磁盤IO。數據庫只更新稍後被惰性寫入程序或檢查點複製到磁盤的髒內存頁面。寫入磁盤的唯一東西是Write Ahead Log活動,對此,有一個特定的每個數據庫計數器:Log Bytes Flushed/sec。請注意,tempdb具有特殊的日誌記錄要求,因爲它永遠不會被恢復,所以它只需要撤消信息。每當髒頁面被實際刷新時,無論是在檢查點還是懶惰的作家,都有特定的計數器:Checkpoint pages/secLazy writes/sec。這些不是每個數據庫,因爲這些活動本身不是「每個數據庫」。最後還有虛擬文件統計信息DMV:sys.dm_io_virtual_file_stats,它提供每個單獨數據庫(包括tempdb)的每個單獨文件的IO操作總數和字節數。

您提到您要測量臨時表和表變量的特定影響,但您無法將它們與其餘的tempdb活動(排序後臺處理,工作表等)分開。我建議你通過Working with tempdb in SQL Server 2005,因爲它仍然適用於SQL 2008.

+0

最好的答案,謝謝! – Tim 2011-03-31 08:38:45

0

如果你使用數據性能監視器(perfmon.exe)監視SQL Server計數器,您可以將其配置爲記錄到.csv文件以在Excel中進行分析(例如)

性能計數器是數據文件大小下SQLServer:數據庫

+0

感謝您的答案,不幸的是,數據文件大小不是我想要的。我想要有數據流(MB /秒讀取和寫入)。 – Tim 2011-03-29 14:47:17

0

我會採取一些定期間隔「快照」(使用以下DMVs)加載到表中,以確定您的內部使用tempDB。

sys.all_objects 
sys.dm_db_file_space_usage 
sys.dm_db_task_space_usage 

sys.dm_db_task_space_usage將SPID打破慣例等

+0

不幸的是,這些視圖沒有提供什麼樣的數據流到tempdb,即MB /秒的讀和寫。但總的來說,深入研究DMV可能是一個好主意,可能他們可能擁有這些信息。 – Tim 2011-03-29 14:52:28