`

SQL Server DMVs

 
阅读更多

扫盲: DMV = Dynamic Management Views,动态管理视图

 

Microsoft introduced a few more dynamic management views to also assist with identifying possible index candidates based on query history.

 

The dynamic management views are:

 

DMV可以解决哪些问题

 

故障诊断

 

诊断就是要识别出问题的所在。有很多的方式和工具可以帮助我们达到这个目的,但是,有了DMV,可能效率会更快:没有什么比分析SQL Server内部的元数据来的更快。

 

很多时候,对问题的诊断也是性能调优的第一步,搞清楚了问题,才好对症下药。

 

利用DMV可以诊断出以下问题:最慢的查询语句,常见的等待与阻塞,没有用的索引,大量的I/O操作,利用率最低的执行计划。

 

正如之前所说,我们可以在不同的级别上面分析问题,例如从整个服务器级别,数据库级别,甚至是某个查询。我们可以通过在获取DMV信息时,设置获取 信息的条件来办到。例如,在上一小节的示例中,就是获取整个SQL Server中找出最慢的前20个查询,如果需要,我们完全可以将条件缩小到某个数据库。

 

很多时候,在识别问题的时候,不是那么容易,仅仅通过一个DMV就搞定了的,需要和DMF结合。甚至要和其他的DMV一起结合分析(在后续文章中,我们会理解的更加深刻)。

 

诊断出了问题,是一个方面,解决问题也尤为重要。

 

 

性能调优

 

性能调优主要是利用相关的技巧技术之前诊断中出现的问题,从而提升性能。我们后续会详细讲述,这里就不再赘述了。

 

 

状态监控

 

很多的DMV(特别是那些以 sys.dm_exec_开头的)都反映了数据库服务器执行的状态。通过查看这些DMV,我们可以清楚的知道数据库服务器的现在的状态和历史的状态(当 然,如何SQL Server服务被重启,那么之前的信息都丢失了,除非定期做了保存)。例如,数据库需要做批处理等长时间的操作,如果其中操作执行超时或运行的非常慢, 这个时候,我们就可以查询DMV来分析。如果采用Profiler或者相关的Profiler脚本跟踪,会对数据库服务器的压力相当大。再如,还可以分析 数据库中现在有哪些查询在运行,有多少请求在处理,打开多少连接等等,主要是对数据库的操作,都可以通过DMV查询到。

 

 

使用DMV,查询Missing Index的方案

 

 

    SELECT

      migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * (migs.user_seeks + migs.user_scans) AS improvement_measure,

      'CREATE INDEX [missing_index_' + CONVERT (varchar, mig.index_group_handle) + '_' + CONVERT (varchar, mid.index_handle)

      + '_' + LEFT (PARSENAME(mid.statement, 1), 32) + ']'

      + ' ON ' + mid.statement

      + ' (' + ISNULL (mid.equality_columns,'')

        + CASE WHEN mid.equality_columns IS NOT NULL AND mid.inequality_columns IS NOT NULL THEN ',' ELSE '' END

        + ISNULL (mid.inequality_columns, '')

      + ')'

      + ISNULL (' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement,

      migs.*, mid.database_id, mid.[object_id]

    FROM sys.dm_db_missing_index_groups mig

    INNER JOIN sys.dm_db_missing_index_group_stats migs ON migs.group_handle = mig.index_group_handle

    INNER JOIN sys.dm_db_missing_index_details mid ON mig.index_handle = mid.index_handle

    WHERE migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * (migs.user_seeks + migs.user_scans) > 10

    ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC

 

 

Reference:

http://www.mssqltips.com/sqlservertip/1634/using-sql-server-dmvs-to-identify-missing-indexes/

http://www.infoq.com/cn/articles/wy-sqlserver-performance-optimization/

http://blogs.msdn.com/b/bartd/archive/2007/07/19/are-you-using-sql-s-missing-index-dmvs.aspx

http://www.devguru.com/technologies/t-sql/7108

 

 

 

分享到:
评论

相关推荐

    SQL Server DMVs in Action

    SQL Server DMVs in Action

    SQL Server DMVs in Action(Manning,2011)

    SQL Server DMVs in Action shows you how to obtain, interpret, and act on the information captured by DMVs to keep your system in top shape. The over 100 code examples help you master DMVs and give you...

    Manning.SQL.Server.DMVs.in.Action

    Manning.SQL.Server.DMVs.in.Action

    SQLServer DBA和专家必看的3本书(高清晰原版)

    其中包含了3本想成为SQLServerDBA或专家必看的书:1.Microsoft SQL Server 2008 Internals能够帮助你深入理解SQLServer2008的内部结构和工作原理。2.SQL Server 2008 Query Performance Tuning Distilled能够帮助你...

    SQL Server Useful DMVs

    SQL Server DMV queries are very useful to check current and historical information. They are widely used during troubleshooting and performance tuning.

    SQL Server误区30日谈 第13天 在SQL Server 2000兼容模式下不能使用DMV

    对于兼容模式已经存在了很多误解。80的兼容模式的数据库是否意味着能够附加或恢复到SQL Server 2000数据库?当然不是

    Microsoft SQL Server 2005技术内幕 查询、调整和优化

    Microsoft SQL Server 2005技术内幕 系列之一 其他的几本,我都会全部上传,有需要的点击我的用户名查看我所有的资源会有你想要的其他三本。 编辑推荐 通过专家们架构级的洞察力来优化企业级数据库 以SQL Server...

    SQL.Server.DMVs.实战

    自2005以来DMV占据了性能监控的主导地位,所以如果想做DBA或者一个优秀的数据库开发人员,就要熟读这本书

    如何获得SQL Server索引使用情况

    问题: ...  在SQLServer中,许多新的DMVs被引入,供你窥探一些过往版本中不能或很难看到的数据。其中一个新函数和一个新视图是提供索引使用情况:  Sys.dm_db_index_operational_stats和sys.

    sqlserver_indexanalysis

    sqlserver_indexanalysis 注意:“索引操作”列中的建议不是黑白建议。 它们是更合适的浅灰色想法。 始终使用您的数据库经验来代替一揽子建议。 The information in the DMVs is gathered from when the SQL Server ...

Global site tag (gtag.js) - Google Analytics