2013-04-02 120 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
它为我们提供了一个当前正在服务器上进行的快照,以及语句正在使用的执行计划。
它易于使用且免费。