All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
浅谈PHP开发中MySQL数据库索引的经验_php资料_编程技术
关于ASP.NET2.0,中的用户控件编程使用_.net资料_编程技术
ASP.NET,中的上传控件使用_[Asp.Net教程]
delphi组件的分类
ASP.NET,2.0打造购物车和支付系统之一_.net资料_编程技术
AJAX学习基础:简单介绍数据岛使用方法_.net资料_编程技术
PHP实例:用PHP实现多文件上载系统程序_php资料_编程技术
ASP.NET2.0中Tabs的简单实现_[Asp.Net教程]
在,GridView,中增加记录的方法_[Asp.Net教程]
ASP.NET模拟其他用户进行关机_.net资料_编程技术
Reading number is top 10 pictures
性感丰满身材火爆de美女1
The money of more than 100 countries and regions9
Startling Russian girl blind date scene1
A man's favorite things12
湖边的风景
Take you to walk into the most true north Korea rural1
The money of more than 100 countries and regions19
Female model behind the bitterness, often being overcharged3
The Soviet union swimsuit exposure in the 70 year3
A resort photographed beautiful young woman change clothes process vomiting blood1
Download software ranking
Tram sex maniac 2 (H) rar bag1
The Bermuda triangle2
Take off clothes to survival
Tram sex maniac 2 (H) rar bag8
Boxer's Top ten classic battle6
I'm come from Beijing1
网页特效实例大全
Kung fu panda - the secret of the teacher
linux高级编程
C#程序员参考手册
归海一刀 published in(发表于) 2014/2/1 0:11:16 Edit(编辑)
SQL,Server,最佳实践分析器使用小结_[SQL,Server教程]

SQL,Server,最佳实践分析器使用小结_[SQL,Server教程]

SQL Server 最佳实践分析器使用小结_[SQL Server教程]

Best Practices Analyzer Tool for Microsoft SQL Server 2000是Microsoft SQL Server开发团队开发的一个数据库管理工具,可以让你检测设计的数据库是否遵循SQL Server操作和管理的最佳实践准则。这些准则公认有助于提高数据库的性能和效率,并让应用程序易于维护。



2,开始使用SQL BPA最佳实践分析器


安装完成后会有一个SQL Server Best Practices Analyzer User Guide的Word文档,如何使用讲解的很清楚,基本步骤如下:


(1)登录SQL BPA


(2)添加分析/检测的SQL Server实例


这里需要输入SQL Server实例名称,Friendly Name用来和后面创建Best Practice Group相关联(和SQL Server实例名称保持一样就可以了)。Database List的缺省值为*,表示包含当前SQL Server实例的所有数据库。但是,BPA会跳过对‘master’, ‘tempdb’, ‘msdb’, ‘pubs’, and ‘northwind’等数据库的检测。


(3)管理Best Practice Groups(最佳实践组)


首先需要创建一个Best Practice Group,其实是组合了一些Rules,并和前面输入的SQL Server实例进行关联。


(4)分析SQL Server实例


将前面创建Best Practice Group移到Best Practice Groups to be Executed列表中,就可以按照前面定义的Rules来执行,并产生Report提供改进的建议和准则。


3,SQL BPA v1.0包括的Rules


我觉得这个是重点,因为只有明白了这些SQL Server操作和管理的最佳实践准则,才能在设计数据库和编写T-SQL脚本时,尽量按照这些Rules来操作,提高SQL Server和应用程序的性能和效率。


其实所有的Rules都在这里(English Version)file:///C:/Program%20Files/Microsoft%20SQL%20Server%20Best%20Practices%20Analyzer/html/RuleInformation.html#_Rule:_Explicit_Index_Creation,请注意我是采用默认路径安装的SQL BPA,如果你改变的安装路径,就不在这里了。


下面将一些自己比较感兴趣的Rules整理了一下:


(1)数据库设计


Rule: Tables without Primary Keys or Unique Constraints


检测数据库确保所有的table都有定义一个Primary Key或一列有Unique Constraint的定义。


Rule: User Object Naming(用户对象的命名)


检测以sp_, xp_, or fn_为前缀命名的用户对象,避免和SQL Server的内置对象发生命名冲突。如果SQL Server发现存储过程以sp_作为前缀,就会先到master数据库中查询这个存储过程,影响性能呵。


因此,要符合下列准则:


不要使用sp_前缀来命名用户定义的存储过程;


不要使用xp_前缀来命名用户定义的扩展存储过程;


不要使用fn_前缀来命名用户定义的函数。


其实,可以通过使用usp_, uxp_, or ufn_等前缀来命名就可以了,u表示user defined。


(2)T-SQL


Rule: Cursor FOR UPDATE column list


检测stored procedures, functions, views and triggers中FOR UPDATE子句。当一个cursor定义了FOR UPDATE子句,则推荐提供明确的column列。FOR UPDATE用来定义cursor内可更新的列。如果提供了 OF column_name,则只允许修改列出的列。如果在没有指定列的列表,除非指定了READ_ONLY并发选项,否则所有列均可更新。SQL Server可以基于指定的列优化操作。


Rule: Cursor Usage


检测stored procedures, functions, views and triggers中是否正确定义cursor可更新性。在如下情况下,会报告失败:


当一个cursor没有定义FOR UPDATE子句,但通过cursor来更新;


当一个cursor定义了FOR UPDATE子句,却没有通过cursor来更新。


不过,一般我们尽量避免使用服务器端cursor,因为比较占用服务器内存资源,影响SQL Server的性能。可以使用嵌套查询或者WHILE语句,来代替cursor。即使使用cursor,也应注意定义cursor的一些选项,如FAST_FORWARD。


Rule: Explicit Index Creation


推荐使用CLUSTERED or NONCLUSTERED显式创建index。


Rule: INSERT Column List


要求在使用INSERT时,明确提供column列表,提高代码的可维护性。


Rule: Nested Triggers Configuration


检测由于nested triggers的配置问题,未触发的triggers。这个比较少有,直接贴过来了。


When 'nested triggers' configuration option is set to 0, any AFTER trigger defined on tables/views updated inside an INSTEAD OF trigger is not fired. This rule:


1) Checks the value of the configuration option and exits if it is not 0.


2) Scans all INSTEAD OF triggers and generates a list of tables/view being target of DML from within a trigger.


3) Checks whether any of the identified DML targets have AFTER triggers defined on them.


4) Reports non-compliance for any such case.


Rule: NOCOUNT Option in Triggers


检测triggers,确保在triggers前面写有SET NOCOUNT ON。


SQL Server在每一条语句执行完成后,都会发送’done’信息。这些信息会导致触发trigger的应用程序可能产生一些意外的后果。因此,在trigger前面加上SET NOCOUNT ON是一个良好的设计习惯。


当然,在stored procedures, functions中都推荐在前面添加SET NOCOUNT ON。这样一系列SQL命令执行影响的行数不会传回客户端,减少网络流量,提高性能。


Rule: NULL Comparisons


检测stored procedures, functions, views and triggers中涉及NULL常量的等于或不等于比较。推荐设置ANSI_NULLS为ON,并且使用IS关键字来呵NULL常量进行比较。


Rule: Results in Triggers


检测triggers,确保triggers没有数据返回给调用者。因此,不推荐在triggers中使用如下语句:


PRINT statement


SELECT (without assignment or INTO clause)


FETCH (without assignment)


Rule: Scoping of Transactions


检测stored procedures and triggers中的transaction范围,推荐transaction的开始和结束在同一T-SQL结构内。


一般而言,尽量缩小transaction的范围,避免占用大量的资源,影响SQL Server性能。


Rule: SELECT *


检测stored procedures, functions, views and triggers中SELECT *的使用。尽管SELECT * 比较方便,但是会降低程序的可维护性。对table or view的改变,可能会引起错误或性能的改变。


因此,推荐在SELECT语句后面显式指定字段列表。


Rule: SET Options


检测stored procedures and triggers中如下SET语句的使用。


推荐如下选项设置为ON:


ANSI_NULLS
ANSI_PADDING
ANSI_WARNINGS
ARITHABORT
CONCAT_NULL_YIELDS_NULL
QUOTED_IDENTIFIER


推荐如下选项设置为OFF:


NUMERIC_ROUNDABOUT


Rule: Temp Table Usage


检测stored procedures and triggers中临时表的使用。当创建临时表时,需要创建CREATE INDEX,并且在使用完成后,需要释放该临时表。


因为临时表会产生大量的磁盘IO操作,因此推荐采用TABLE变量替换临时表的使用。


不过,由于并发执行的限制和统计信息的维护,当有大量的数据插入临时表时,仍推荐采用临时表。


Rule: TOP without ORDER BY


检测stored procedures, functions, views and triggers中缺少ORDER BY的TOP语句。在使用TOP语句时,推荐指定排序条件。否则,产生的结果将于SQL执行计划相关而导致异常的行为。


Rule: Use of Schema Qualified Tables/Views


检测stored procedures, functions, views and triggers中引用tables and views时,拥护者owner是否指定。虽然在SQL Server中引用特定的对象时,可以不指定server, database and owner(schema),也就是说不用server_name.database_name.owner_name.***这么麻烦,但是SQL Server推荐当在stored procedure, function, view or trigger中引用table or view时,最好指定table or view的拥有者。


当SQL Server查询未指定owner的table/view对象时,首先查询缺省的owner,然后才是dbo。这样,会导致SQL Server产品额外的运行成本。通过指定owner,可以改进SQL Server的性能。(第一次听到这种说法)


4,参考文档及相关资源


工具下载URL:


http://www.microsoft.com/downloads/details.aspx?FamilyId=B352EB1F-D3CA-44EE-893E-9E07339C1F22&displaylang=en


视频下载URL:


http://www.microsoft.com/china/msdn/events/webcasts/shared/msdntv/episode.aspx?xml=/china/msdn/events/webcasts/msdntv/20040610sqlserverck/manifest.xml







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.