ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 比较SQL Server 2008数据库引擎优化和索引优化

比较SQL Server 2008数据库引擎优化和索引优化

原创 Linux操作系统 作者:iSQlServer 时间:2009-03-09 14:20:29 0 删除 编辑
除了可以处理 Microsoft SQL Server 的新数据库功能以外,数据库引擎优化顾问在具体操作方面也不同于 Microsoft SQL Server 2000 索引优化向导。尽管这两个工具都提供了图形用户界面 (GUI) 和命令提示符界面,但熟悉索引优化向导的用户应注意以下更改。

  有关数据库引擎优化顾问的新功能的完整列表,请参阅数据库引擎优化顾问功能。

  优化数据库所需的权限

  在 SQL Server 2000 中,只有 sysadmin 固定服务器角色的成员可以使用索引优化向导来优化数据库。在 SQL Server 中,通过使用数据库引擎优化顾问,sysadmin 角色的成员仍可以优化数据库,但目前 db_owner 固定数据库角色的成员同样可以优化自己所拥有的数据库。

  注意:

  首次使用时,必须由具有系统管理员权限的用户启动数据库引擎优化顾问以初始化应用程序。初始化后,sysadmin 固定服务器角色的成员和 db_owner 固定数据库角色的成员都可以使用数据库引擎优化顾问来优化数据库。但请注意,db_owner 角色成员只可以优化自己所拥有的数据库。有关详细信息,请参阅初始化数据库引擎优化顾问。

  工作负荷上下文

  索引优化向导使用选定要优化的数据库来评估工作负荷中的每条语句,而不管该语句最初是否是在该数据库的上下文中执行的。索引优化向导在一个优化会话中只能优化一个数据库。数据库引擎优化顾问可以在一个优化会话期间优化多个数据库。数据库引擎优化顾问使用脚本中的信息确定语句运行所在的数据库,并针对该数据库评估此语句。选定要优化的数据库不会影响评估语句的方式。

例如:

  * AdventureWorks 数据库包含一个 Person.Contact 表,该表中包含 FirstName 和 LastName 列。
  * 工作负荷 TuneQuery.sql 包含以下查询:

   SELECT FirstName, LastName
   FROM Person.Contact
   WHERE LastName = 'Abercrombie';
   GO

  * 在默认情况下,User1 连接到 MyDB 数据库。

  在 SQL Server 2000 中,User1 从命令行发出以下命令,或使用索引优化向导 GUI 执行类似的步骤:

  Itwiz -D AdventureWorks -I TuneQuery.sql –o rec.sql –U –P

  此方法有效,因为 TuneQuery.sql 中的每条语句均针对 AdventureWorks 数据库(因为命令行 -D AventureWorks 中指定了它)进行了分析。TuneQuery.sql 在 AdventureWorks 数据库中有效,优化继续进行,并且未出现任何问题。

  使用数据库引擎优化顾问时,命令行语法为:

  dta -s Session1 –D AdventureWorks –if TuneQuery.sql –of rec.sql –U username –P password

  由于默认情况下,User1 连接到 MyDB 数据库,因此系统将数据库上下文设置为 MyDB。然后,对 MyDB 数据库而不是对 AdventureWorks 分析 Transact-SQL 语句。该语句在 MyDB 中无效,因此被忽略。

  为什么会出现这种情况?如果 User1 在未指定目标数据库的情况下使用 sqlcmd 或 SQL Server Management Studio 来执行 TuneQuery.sql,则 TuneQuery.sql 将针对 MyDB 执行分析,这将导致分析失败。数据库引擎优化顾问的操作与此类似。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16436858/viewspace-564913/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-10-17

  • 博文量
    1319
  • 访问量
    2105720