2013-04-02 143 views
0

SQL Server是否在讀,寫,更新時間等方面爲每個表維護統計信息?SQL Server 2008 R2表訪問時間

我們現在想知道哪些表我們的ERP應用中花最多的時間,並開始尋找各種方法來優化表。

回答

1

嗯,SQL Server不按表名跟蹤這些統計數據。但是,您可以查看像sys.dm_exec_query_stats這樣的DMV,以查看哪些查詢花費的時間最長。

SELECT [sql] = SUBSTRING 
(
    st.[text], 
    (s.statement_start_offset/2)+1, 
    (CASE s.statement_end_offset 
    WHEN -1 THEN DATALENGTH(CONVERT(NVARCHAR(MAX), st.[text])) 
    ELSE s.statement_end_offset END 
    - s.statement_start_offset)/2 
), s.* 
FROM sys.dm_exec_query_stats AS s 
CROSS APPLY sys.dm_exec_sql_text(s.[sql_handle]) AS st 
WHERE s.execution_count > 1 
AND st.[dbid] = DB_ID('Your_ERP_Database_Name') 
ORDER BY total_worker_time*1.0/execution_count DESC; 

當然,你可以通過任何你想要的度量訂購,並迅速眼球的第一列,看看您識別任何可疑活動。

你也可以看看sys.dm_exec_procedure_stats來標識消耗高持續時間或讀取程序。

請記住,這些和其他DMV重置各種事件,包括重新啓動,服務重新啓動等。所以如果你想保持這些指標的趨勢/基準/比較目的的歷史記錄,你將有快照他們自己,或獲得第三方產品(如SQL Sentry Performance Advisor),可以幫助這一點和更多。

聲明:我SQL哨兵工作。

+0

感謝您的信息。我們顯然一直在尋找我們已經安裝的MS SQL版本中不存在的功能(我們也運行DB2,Oracle,Informix等) 我們將按照您的建議腳本化這些命令,同時也關注SQL Sentry PA 。 感謝您的回覆 –

0

您可以創建一個SQL Server審覈按以下鏈接:

http://msdn.microsoft.com/en-us/library/cc280386(v=sql.105).aspx

+0

@喬希 - 加拉赫 我們** **不知道_SQL服務器AUDIT_的。 謝謝你指出這一點。 在不久的將來,我們將着眼於在SQL Server上實現這一點。不得不跳過幾個認證環節,但應該可以做到。 在短期內,我們會根據** Aaron **提出的命令運行腳本,因爲我們有時間限制。 再次感謝您的回覆 –

0

SQL Server確實捕獲了您詢問的信息,但它是基於每個索引而不是每個表 - 查看sys.dm_db_index_operational_stats和sys.dm_db_index_usage_stats。您必須根據object_id來聚合數據以獲取表信息。但是,有一些注意事項 - 例如,如果不使用索引(不讀取或不寫入),則不會顯示在輸出中。這些統計信息在實例重新啓動時重置,並且在重建索引時存在導致它們在index_usage_stats中重置的錯誤(https://connect.microsoft.com/SQLServer/feedback/details/739566/rebuilding-an-index-clears-stats-from-sys-dm-db-index-usage-stats)。而且,DMV的輸出之間存在顯着差異 - 請查看Craig Freedman的帖子以獲取更多信息(http://blogs.msdn.com/b/craigfr/archive/2008/10/30/what-is-the-difference-between-sys-dm-db-index-usage-stats-and-sys-dm-db-index-operational-stats.aspx)。

更大的問題是,什麼問題是你想有了這個信息來解決?我同意Aaron的觀點,即尋找花費很長時間的查詢是一個更好的開始優化的地方。但是,我想讓你知道SQL Server確實有這些信息。

0

我們使用sp_whoisActive從Adam Mechanics blog
它爲我們提供了一個當前正在服務器上進行的快照,以及語句正在使用的執行計劃。
它易於使用且免費。