您的位置:首页 > 数据库

sql server08 查询优化系列 3-2 sql 查询性能分析

2012-05-11 17:30 155 查看
没有profiler的情况下 的 查询性能度量

动态管理视图
sys.dm_exec_query_stats  ---> http://msdn.microsoft.com/en-us/library/ms189741.aspx


.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; } 可以查看查询性能.  可以看到此时运行时间最长的查询或者最多物理读操作.

识别开销较大的查询

sql serve的目标是 在最短的时间 将结果集返回给客户.

为此,sql server 有一个内建的,基于开销的优化程序.叫做查询优化器 (query optimizer),它 生成一个

成本效益高的策略(称为查询计划).

查询计划 计算许多因素的权重,包括(但是不限于) 执行查询 所需的cpu,内存以及磁盘I/O,的使用情况--这些均来自

于 索引维护或过程中生成的统计..

在跟踪返回的数据中, cpu和reads 还显示了查询的开销所在.

cpu 表示 用于执行查询的cpu时间.

reads列 表示 一个查询操作 的 逻辑页面的数量,从而指出 查询产生 的 内存压力.

它还提供了 磁盘压力的指标.

因为内存页面 必须在操作查询中被备份,在第一次数据访问期间写入,并且在内存瓶颈的时候 被移到磁盘上.

查询的逻辑读越大,磁盘压力的可能性就越大. 过多的逻辑页面页增加了 cpu用于管理这些页面的 负载.

 

导致大量逻辑读的查询 通常在相应的大数据集上得到锁.即使读 页需要在所有数据上的共享锁.这些查询阻塞了其他

请求修改这些数据的查询,但是不阻塞 读取数据的查询.就会导致阻塞.

 

开销大的查询 分为两类:

单次执行: 查询的一次单独执行的开销较大.

多次执行:查询本身开销不大,但是该查询重复执行,导致系统资源上的压力/

 

1.单次执行开销较大的查询

未完待续..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: