SQL Server 动态管理视图(DMVs)

DMV在本地部署的SQL Server中须要VIEW SERVER STATE的权限sql

 

和事务有关的DMV
sys.dm_tran_active_transactions:返回与您的当前逻辑数据库的事务有关的信息。
sys.dm_tran_database_transactions:返回有关用户数据库级事务的信息。
sys.dm_tran_locks:返回有关当前处于活动状态的锁管理器资源的信息。向锁管理器发出的已授予锁或正等待授予锁的每一个当前活动请求分别对应一行。结果集中的列大致分为两组:资源组和请求组。资源组说明正在进行锁请求的资源,请求组说明锁请求。
sys.dm_tran_session_transactions:返回关联事务和会话的相关信息。数据库

和执行有关的DMV
sys.dm_exec_connections: 返回有关与 Microsoft SQL Azure 数据库创建的链接的信息。
sys.dm_exec_query_plan: 以 XML 格式返回计划句柄指定的批查询的显示计划。计划句柄指定的计划能够处于缓存或正在执行状态。
sys.dm_exec_query_stats: 返回缓存查询计划的聚合性能统计信息。缓存计划中的每一个查询语句在该视图中对应一行,而且行的生存期与计划自己相关联。在从缓存删除计划时,也将从该视图中删除对应行。
sys.dm_exec_requests: 返回有关在 Microsoft SQL Azure 服务器内执行的每一个请求的信息。
sys.dm_exec_sessions: 返回有关全部活动的用户链接和内部任务的信息。
sys.dm_exec_sql_text: 返回由指定的 sql_handle 标识的 SQL 批处理的文本。该表值函数将替换系统函数 fn_get_sql。
sys.dm_exec_text_query_plan: 为 Transact-SQL 批查询或批查询中的特定语句返回文本格式的显示计划。执行计划句柄指定的查询计划可处于缓存状态或正在执行状态。此表值函数与 sys.dm_exec_query_plan 相似,但存在如下差别:
• 查询计划的输出以文本格式返回。
• 查询计划的输出无大小限制。缓存

和数据库相关的DMV
sys.dm_db_partition_stats:为当前数据库中每一个分区返回页和行计数信息。
只有那些与范围内的服务器直接相关的信息会被暴露出来。在SQL Azure中,那些在SQL Server会返回实例级服务器信息的列将会返回空值。所以,若是你有一些用于SQL Server的自定义故障排除查询,你能够直接在SQL Azure中运行它们而不须要进行修改。服务器

识别性能不佳的查询语句
SQL Server为全部执行的查询生成一个优化过的查询计划。这使得SQL Server的优化器能够在一样或者相似的查询执行的时候重用查询计划,从而在最短的时间内接收数据。一旦数据发生变化,数据列上的统计信息会使得查询计划变得过时和低效。为了得到应用程序的最佳性能以及一致的用户体验,识别而且调试这些语句很是的重要。以前列出的DMV能够直接帮助识别那些有问题的查询。session

下面的是一些用于标识这些有问题的查询的基本查询语句:app

过多的从新编译:
select top 25
    sql_text.text,
    sql_handle,
    plan_generation_num,
    execution_count,
    dbid,
    objectid
from
    sys.dm_exec_query_stats a
    cross apply sys.dm_exec_sql_text(sql_handle) as sql_text
where
    plan_generation_num >1
order by plan_generation_num desc函数

不够高效的查询计划
select
    highest_cpu_queries.plan_handle,
    highest_cpu_queries.total_worker_time,
    q.dbid,
    q.objectid,
    q.number,
    q.encrypted,
    q.[text]
from
    (select top 50
        qs.plan_handle,
        qs.total_worker_time
    from
        sys.dm_exec_query_stats qs
    order by qs.total_worker_time desc) as highest_cpu_queries
    cross apply sys.dm_exec_sql_text(plan_handle) as q
order by highest_cpu_queries.total_worker_time desc性能

I/O瓶颈
select top 25
    (total_logical_reads/execution_count) as avg_logical_reads,
    (total_logical_writes/execution_count) as avg_logical_writes,
    (total_physical_reads/execution_count) as avg_phys_reads,
     Execution_count,
    statement_start_offset as stmt_start_offset,
    sql_handle,
    plan_handle
from sys.dm_exec_query_stats  
order by
(total_logical_reads + total_logical_writes) desc优化

 

 

转自:http://blogs.technet.com/b/sqlazurechina/archive/2011/08/18/sql-azure-optimization-debugging.aspxdebug

相关文章
相关标签/搜索