SQL2005性能分析一些细节功能你是否有用到?(二)

系统 1536 0
原文: SQL2005性能分析一些细节功能你是否有用到?(二)

       上一篇: SQL2005性能分析一些细节功能你是否有用到? 我简单的提到了些关于SQL性能分析最基本的一些方法,下面的文章我会陆续补充。前面提到了根据SQL的执行IO和执行计划来分析,还有一个特别重要的参数,就是SET STATISTICS TIME。

       第一: SET STATISTICS TIME

               定义: SET STATISTICS TIME (Transact-SQL)  显示分析、编译和执行各语句所需的毫秒数。

               语法: SET STATISTICS TIME { ON | OFF }

               备注: 当 SET STATISTICS TIME 为 ON 时,会显示语句的时间统计信息。为 OFF 时,不显示时间统计信息。SET STATISTICS TIME 的设置是在执行或运行时设置,而不是在分析时设置。

               权限 : 若要使用 SET STATISTICS TIME,用户必须具有执行 Transact-SQL 语句的相应权限。但不需要 SHOWPLAN 权限。

               作用: 我们可以利用这个参数来查看SQL的CPU开销情况,进而做出优化方案。

               效果图:

               SQL2005性能分析一些细节功能你是否有用到?(二)

       第二:sp_help

              定义: 报告有关数据库对象(sysobjects 表中列出的任何对象)、用户定义数据类型或 Microsoft® SQL Server™ 所提供的数据类型的信息。

              语法 : sp_help [ [ @objname = ] name ]

          参数 : [@objname =] name 是 sysobjects 中的任意对象的名称,或者是在 systypes 表中任何用户定义数据类型的名称。不能使用数据库名称。            

              效果图:

SQL2005性能分析一些细节功能你是否有用到?(二)            

               内容:

                 1:表结构 ,它会列出目标表中所有的字段信息:名称,数据类型等。
                 2:索引情况 ,包含聚集索引和非聚集索引.索引所对应的字段等。
                 3:表字段的约束情况
                 4:表的基本信息,表类型,创建时间,表名等。

                 5:主键详细信息。

              用途一 : 一般对于性能分析关系有直接关系的有 1,2,5 。开发员可以非常快捷清晰的查看表的设计情况.对于查询来说最重要的就是表的索引情况和表结构.对于其它的用途本人暂不胡说了。

              案例: 一次实际开发中,运行一个单表查询,发面页面报出SQL05 timeout的错误,后来在数据库中直接运行语句发现时间特别长,达到58m,查看记录,一个长达9位数的字样把我吓到了,没办法只能是优化了,sp_help下,发现条件中的字段没有创建索引, 创建后再试,基本控制在1m左右。

        第三:SET NOCOUNT

               定义: 阻止在结果集中返回可显示受 Transact-SQL 语句或存储过程影响的行计数的消息。 

               语法: SET NOCOUNT { ON | OFF }           

               备注: 当 SET NOCOUNT 为 ON 时,不返回计数。当 SET NOCOUNT 为 OFF 时,返回计数。即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。当 SET NOCOUNT 为 ON 时,将不向客户端发送存储过程中每个语句的 DONE_IN_PROC 消息。如果存储过程中包含一些并不返回许多实际数据的语句,网络通信流量便会大量减少,因此,将 SET NOCOUNT 设置为 ON 可显著提高性能。SET NOCOUNT 指定的设置是在执行或运行时生效,而不是在分析时生效。          

               权限: 要求具有 public 角色的成员身份。

               注意点: ExecuteNonQuery();将得不到返回值,此时可以利用存储过程的返回参数来获得.

               缺点 :当我们执行一条更新或者是删除语句时,一般判断是否成功都是根据这个返回的受影响的行来判断,现在当SET NOCOUNT 为 ON 时,不返回计数,只能利用输出参数来判断了.

               优点: 如果存储过程中包含一些并不返回许多实际数据的语句,网络通信流量便会大量减少,因此,将 SET NOCOUNT 设置为 ON 可显著提高性能。

        总结: 可能有的朋友会认为本人只是在这一味的copy MSDN,其实从本质上说是这样,但 copy 并不代表一无是处,经过我的工作经验来看,我们开发中遇到的很多问题其实在MSDN上都有说明,但 为什么我们总是在MSDN上找不到答案呢? 这就是因为我们不懂搜索相关的关键字,为此我将我的一些学习所得写出来,希望和我一样不太会用MSDN的朋友共进步.

 注:本文引用MSDN

SQL2005性能分析一些细节功能你是否有用到?(二)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论