热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SQLServer2008数据库引擎优化顾问与索引优化向导之间的差别

除了可以处理MicrosoftSQLServer的新数据库功能以外,数据库引擎优化顾问在具体操作方面也不同于MicrosoftSQLServer2000索引优化向导。尽管这两个工具

除了可以处理 Microsoft SQL Server 的新数据库功能以外,数据库引擎优化顾问在具体操作方面也不同于 Microsoft SQL Server 2000 索引优化向导。尽管这两个工具都提供了图形用户界面 (GUI) 和命令提示符界面,但熟悉索引优化向导的用户应注意以下更改。

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

在 SQL Server 2000 中,只有 sysadmin 固定服务器角色的成员可以使用索引优化向导来优化数据库。在 SQL Server 中,通过使用数据库引擎优化顾问,sysadmin 角色的成员仍可以优化数据库,但目前 db_owner 固定数据库角色的成员同样可以优化自己所拥有的数据库。
ms173448.note(zh-cn,SQL.100).gif注意:
首次使用时,必须由具有系统管理员权限的用户启动数据库引擎优化顾问以初始化应用程序。初始化后,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 执行分析,这将导致分析失败。数据库引擎优化顾问的操作与此类似。

应执行什么操作?采用以下方法将 USE 语句添加到脚本 TuneQuery.sql 中:

USE AdventureWorks;
GO
SELECT FirstName, LastName
FROM Person.Contact
WHERE LastName = "Abercrombie";
GO

数据库引擎优化顾问首先查看语句 USE AdventureWorks 并使用该信息将当前数据库设置为 AdventureWorks。然后,数据库引擎优化顾问在查看语句 SELECT FirstName, LastName FROM Person.Contact WHERE LastName = "Abercrombie" 时将针对 AdventureWorks 分析该语句(因为当前数据库上下文为 AdventureWorks)。这样,数据库引擎优化顾问就可以成功优化数据库。请注意,如果使用 sqlcmd 或 SQL Server Management Studio 执行以上脚本,则系统将针对 AdventureWorks 执行该语句,这是因为第一个 USE 语句将数据库上下文从 MyDB 更改为 AdventureWorks。

USE 语句可用于指定要对其执行语句的数据库。通常情况下,如果每条语句都使用完全限定的表名,则没有必要进行该操作。

由于数据库引擎优化顾问尝试查找每条语句运行所针对的相应数据库(以模拟执行环境),因此以下信息对于了解数据库引擎优化顾问如何处理不同类型的输入很重要。
SQL 文件/内联工作负荷

正如在前面部分中提到的,数据库引擎优化顾问使用 USE 语句(位于 Transact-SQL 查询之前)标识对其执行查询的数据库。数据库引擎优化顾问从 Transact-SQL 脚本文件中的第一条语句开始查看输入。它首先假设当前数据库是默认数据库。由于存在 USE 语句,因此会更改当前数据库的上下文(这些语句是针对当前数据库进行分析的)。
跟踪文件和跟踪表

数据库引擎优化顾问在分析跟踪文件时模仿 SQL Server Profiler的重播。它按照列出的顺序使用跟踪文件中的下列信息:

* 如果跟踪文件包含填充了 DatabaseName 列的事件,则数据库引擎优化顾问将使用该列查找对其执行该事件的数据库。
* 如果跟踪文件填充了 DatabaseID 列,则数据库引擎优化顾问将使用该列查找对其执行该事件的数据库。它将查询系统目录以找到与 DatabaseID 相对应的数据库名称。

ms173448.note(zh-cn,SQL.100).gif注意:
如果在收集跟踪文件后分离、附加、删除或创建了数据库,则 DatabaseID 和 DatabaseName 映射可能不会保持与创建跟踪文件时相同的状态。数据库引擎优化顾问无法确定此信息。如果出现这种情况,则应从跟踪文件中完全删除 DatabaseID,以防止数据库引擎优化顾问优化错误的数据库。

* 如果跟踪文件中不存在 DatabaseName 或 DatabaseID 列,则数据库引擎优化顾问确定要用于每条语句的数据库的方式与确定要用于跟踪文件中的每个 SPID 列的 Transact-SQL 脚本的方式相同。如果不存在 SPID 列,则将以与确定 Transact-SQL 脚本完全相同的方式确定数据库。

数据库引擎优化顾问在分析每条语句的过程中还使用登录信息(如同在 SQL Server Profiler 重播中)。服务器上的默认数据库随跟踪文件中显示的 LoginName 列值的改变而改变。
ms173448.note(zh-cn,SQL.100).gif注意:
如果跟踪文件中存在的登录不再出现在系统中,则数据库引擎优化顾问将忽略该登录,并在默认情况下使用当前正在执行优化过程的登录。如果出现这种情况,则系统将在数据库引擎优化顾问的优化日志中写入一条消息。

优化时间限制

使用数据库引擎优化顾问可指定优化时间,或指定无限制的优化时间。索引优化向导尚未提供此功能。有关详细信息,请参阅限制优化的持续时间和事件。


推荐阅读
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • Fiddler 安装与配置指南
    本文详细介绍了Fiddler的安装步骤及配置方法,旨在帮助用户顺利抓取用户Token。文章还涵盖了一些常见问题的解决方案,以确保安装过程顺利。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 解决Win10 1709版本文件共享安全警告问题
    每当Windows 10发布新版本时,由于兼容性问题往往会出现各种故障。近期,一些用户在升级至1709版本后遇到了无法访问共享文件夹的问题,系统提示‘文件共享不安全,无法连接’。本文将提供多种解决方案,帮助您轻松解决这一难题。 ... [详细]
  • 本文详细介绍了如何在CentOS 6.5系统上安装和配置Redis 3.0.6,包括必要的环境准备、软件包下载、编译安装及基本功能测试。 ... [详细]
  • Zabbix自定义监控与邮件告警配置实践
    本文详细介绍了如何在Zabbix中添加自定义监控项目,配置邮件告警功能,并解决测试告警时遇到的邮件不发送问题。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文详细介绍了如何在Azure DevOps Services和Azure DevOps Server中调整时区设置,以及这些设置对不同功能的影响。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
author-avatar
rge4688618
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有