SQL Server 动态管理视图(DMVs)
DMV在本地部署的SQL Server中需要VIEW SERVER STATE的权限
和事务有关的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可以直接帮助识别那些有问题的查询。
下面的是一些用于标识这些有问题的查询的基本查询语句:
过多的重新编译:
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.aspx
SQL Server 动态管理视图(DMVs)的更多相关文章
- SQL Server 内存管理
windows memory: Memory: Cache Bytes 是系统的working set, 也就是系统使用的物理内存数目. 可以观察Windows用了多少物理内存. 1. System ...
- SQL Server 2005 的动态管理视图DMV和函数DMF
优化 的动态管理视图DMV和函数DMF SQL Server 05提供了动态管理视图Dynamic Management Views和函数 Functions,方便了我们对系统运行情况的监控,故障诊断 ...
- 人人都是 DBA(IV)SQL Server 内存管理
SQL Server 的内存管理是一个庞大的主题,涉及特别多的概念和技术,例如常见的 Plan Cache.Buffer Pool.Memory Clerks 等.本文仅是管中窥豹,描述常见的内存管理 ...
- [转]动态管理视图和函数 (Transact-SQL)
动态管理视图和函数返回可用于监视服务器实例的运行状况.诊断故障以及优化性能的服务器状态信息. 重要提示 动态管理视图和函数返回特定于实现的内部状态数据. 在未来的 SQL Server 版本中,它们的 ...
- SQL Server主要系统视图说明
SELECT * FROM sys.all_columns --显示属于用户定义对象和系统对象的所有列的联合--https://docs.microsoft.com/zh-cn/sql/relatio ...
- SqlServer性能优化 手工性能收集动态管理视图(三)
动态管理视图: 具体的实例语句: --关于语句执行的基本情况 select * from sys.dm_exec_query_stats --动态管理函数 需要提供参数 select top 1 ...
- 使用SQL Server 2000索引视图提高性能
什么是索引视图? 许多年来,Microsoft? SQL Server? 一直都提供创建虚拟表(称为视图)的功能.在过去,这些视图主要有两种用途: 提供安全机制,将用户限制在一个或多个基表中的数据的某 ...
- sql server 警报管理,实时监听数据库动向,运筹帷幄之中
工作这么多年了,无论是身边的同学还是同事,发现只要搞程序员的都有一个通病---懒.懒到谁都不愿意加班,尤其是"义务"加班.即使大家都不愿意加班,但是很多时候项目赶着上线或者上线之后 ...
- (转)[SQL Server] 动态sql给变量赋值(或返回值给变量)
本文转载自:http://blog.csdn.net/xiaoxu0123/article/details/5684680 [SQL Server] 动态sql给变量赋值(或返回值给变量) decla ...
随机推荐
- 使用plupload绕过服务器,批量上传图片到又拍云
本文最初发布于我的个人博客:Jerry的乐园 综述 论坛或者贴吧经常会需要分享很多图片,上传图片比较差的做法是上传到中央服务器上,中央服务器再转发给静态图片服务器.而这篇文章讲介绍如何使用pluplo ...
- Javascript 模块模式
模块模式(Module Pattern)提供了一种代码封装的方式,可以优雅地创建非耦合的代码块. 它是利用即时函数为对象创建私有变量和特权方法.严格来说,Javascript中没有私有成员的概念,所有 ...
- Java TCP异步数据接收
之前一直采用.Net编写服务端程序,最近需要切换到Linux平台下,于是尝试采用Java编写数据服务器.TCP异步连接在C#中很容易实现,网上也有很多可供参考的代码.但Java异步TCP的参考资料较少 ...
- python restful 框架之 eve 外网访问设置
官网地址: http://python-eve.org/ 配合mongodb进行crud使用起来很方便,但是部署的时候遇到一个问题,按照官网和Deom说的,servername使用 '127.0.0. ...
- PHP字符串拼接与MySQL语句
这个部分总是钻牛角尖.总是出错. public function getList($pagesize=25){ $where = '1'; $tableName = $this->getTabl ...
- PHP preg_replace() 正则替换所有符合条件的字符串示例
PHP preg_replace() 正则替换,与Javascript 正则替换不同,PHP preg_replace() 默认就是替换所有符号匹配条件的元素. 需要用程序处理的数据并不总是预先以数 ...
- PHP生成随机字符串包括大小写字母
PHP生成随机字符串包括大小写字母,这里介绍两种方法: 第一种:利用字符串函数操作 <?php /** *@blog <www.phpddt.com> */ function cre ...
- WordPress 主题开发 - (八) Head模板 待翻译
THE WORDPRESS THEME HEADER TEMPLATE Now we get into the nitty-gritty: building up your header.php an ...
- 算法系列8《Base64》
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,Base64编码可用于在HTTP环境下传递较长的标识信息.在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单 ...
- oracle 11g 分区表
查看所有用户分区表及分区策略(1.2级分区表均包括): SELECT p.table_name AS 表名, decode(p.partitioning_key_count, 1, '主分区') AS ...