使用SQL Query Analyzer和SQL Profiler
使用SQL Query Analyzer
使用SQL Profiler
最佳化T-SQL陈述式
本章总结
本章我们将继续 第 21 章 中关于预存程序的说明。本章将学习如何利用 SQL Query Analyzer 和 SQL Profile
分析预存程序和其它陈述式。从
分析中可以确定 T-SQL 陈述式是否有效率。一个有效的
SQL Server 查询会使用适当的操作次序和适当的索引,来减少过程的行列数并使 I/O 操作数达到最小。
用 Query Analyzer 可以检视
SQL Server query optimizer 为 T-SQL 陈述式选择的执行计划。query optimizer 是用来为每个 T-SQL 陈述式找寻最佳执行计划的模块。query optimizer
分析每个 T-SQL 陈述式,考虑大量可能的执行计划,并根据所需要的资源和程序时间来计算每个计划的资源消耗。选择最不会消耗资源的计划。每个计划的资源消耗决定于系统收集关于数据的统计结果,但这些资料不一定是最新的。因为您可能比 query optimizer 更了解
数据库和数据内容,所以能够决定比 query optimizer 更好的计划。使用 Query Analyzer 提供的信息,可以决定 query optimizer 提供给陈述式的计划是否有效率。如果确定它不够好,就试着修改 T-SQL 陈述式或用 SQL 提示将陈述式最佳化。本章将学习如何使用 Query Analyzer,以及如何最佳化 T-SQL 陈述式。
使用 Profiler 可以
分析 SQL Server 系统内部活动,以确定哪些 SQL 陈述式和预存程序的使用造成系统资源的负担。有了这项信息,就能先调整这些陈述式和预存程序。本章除了学习如何使用 Profiler 外,也将说明如何最有效地使用 Profiler 提供的信息。
使用 SQL Query Analyzer
Microsoft
SQL Server 2000 提供的 Query Analyzer 工具,取代
Windows (ISQL/W)中的 Interactive SQL 成为 SQL 图形接口。然而您可能注意到 Query Analyzer 显示在任务
管理员中的是 isqlw.exe。可以用 Query Analyzer 来处理 T-SQL 陈述式,并检视这些陈述式的结果。Query Analyzer 也可以被当作除错工具,用于评估 query optimizer 为 T-SQL query optimizer 陈述式所产生的执行计划。
执行 T-SQL 陈述式
Query Analyzer 最基本的功能是执行 T-SQL 陈述式,并显示陈述式结果。依照下列步骤用 Query Analyzer 来执行 T-SQL 陈述式:
1. 点选 开始 / 程序集 / Microsoft
SQL Server / Query Analyzer ,会显示联机到
SQL Server 对话框,如图35-1所示。利用这个对话框和
SQL Server 系统联机。
图35-1 联机到
SQL Server 对话框
2. 在
SQL Server 文字方块中键入
服务器名称。可以是本地
服务器或远程
服务器的名称。选一个想要连接的本地
服务器,会显示如图35-1中的黑点。
SQL Server 之下的复选框,可指定系统未运作时是否要开启
服务器。在 联机使用 区域中选择用来联机
SQL Server 的验证方式。如果选择使用
Windows 的账户验证,就不必指定使用者名称或密码,因为
Windows 2000 的账号会被用于验证存取
SQL Server 上。如果选择使用
SQL Server 的账户验证,就必须指定
SQL Server 使用者名称和密码,才能存取
SQL Server。
3. 按一下 确定 ,联机到指定的
SQL Server 上,并启动 Query Analyzer。当Query Analyzer 窗口出现时,只能看到 Query 和巡览窗格,但是一旦开始传送 T-SQL 陈述式,窗口就会变更。最大化 Query 窗格会填满整个 Query Analyzer 窗口,如图35-2所示。在工具列的下拉式清单中选取所要执行查询的
数据库。图35-2显示选择 master
数据库,本范例中会在下拉式清单中选取 Northwind
数据库。
图35-2 SQL Query Analyzer 窗口
4. 选择
数据库之后,在右边窗格中键入 T-SQL 陈述式,在这个范例中,请键入『SELECT * FROM customers』。现在有多个选项可用,可以按一下工具列上的 剖析查询 按钮(蓝色的查核记号)来检查 T-SQL 陈述式的语法,或者按一下 执行查询 按钮(朝右的绿色三角形)来执行陈述式。按 取消查询执行 按钮(正方形)可停止查询的执行。图35-3显示了对 Northwind
数据库的 customers 数据表的完整查询。
一旦传送了 T-SQL 陈述式,Query Analyzer 将建立一个窗格,让您可以垂直和水平的卷动来检视结果,如图35-3所示。Query Analyzer 还可以用来帮助您调整您的 T-SQL 陈述式,您将会在本章的 <最佳化T-SQL陈述式> 一节中看到。
图35-3 完整的 Query Analyzer 查询
检视执行计划和修改 T-SQL 陈述式
Query Analyzer 也可以用来检视执行计划,这个执行计划是 Query Optimizer 为您的 T-SQL 陈述式所做的选择。这个特性可帮助您判断 T-SQL 陈述式是否有效率,并确定应该选择哪条执行路径和数据存取路径。然后您可以修改 T-SQL 陈述式和数据库架构,检查效能是否得以提高。要使用 Query Analyzer 来检视 T-SQL 陈述式的评估执行计划,请按照下列步骤操作:
1. 在 Query Analyzer 窗口键入需要 Query Analyzer 评估的 T-SQL 陈述式后,按下 显示评估的执行计划 按钮(这个按钮在数据库选择下拉式清单的右边),或者按Ctrl+L,显示 评估的执行计划 窗格,如图35-4。在这个窗格中,查询透过图形来描述,每个操作的消耗与资料存取的方法都在此显示。在图35-4的窗格中,出现索引名称 Customers.PK_Customers,表示丛集索引 Customers.Pk_Customers 被用来存取资料。
图35-4 评估的执行计划窗格
2. 评估的执行计划 窗格中还提供其它附加数据。要检视操作的附加数据,请将鼠标光标移动到操作图标上。就会出现一个弹出窗口,其中包含附加数据,如图35-5所示。
图35-5 检视关于操作的附加数据
这个弹出窗口包含下列信息:
o 实体作业 查询所执行的操作,例如索引扫描、联结和总计等等。如果实体操作被显示为红色,那是 Query Optimizer 发出的警告,这时您应该固定 T-SQL 陈述式。
o 估计的数据列记数 预估由操作检索的列数。
o 估计的数据列大小 需要检索的列的估计大小。
o 估计的I/O耗用/估计的CPU耗用 由该操作占用的估计 I/O 资源和 CPU时间。越低的值意味着该 T-SQL 陈述式越有效率。
o 估计的执行数 该操作在 T-SQL 陈述式中执行的次数。
o 估计的耗用 由 Query Optimizer 决定的操作消耗。这个消耗显示为T-SQL 陈述式的总消耗百分数。
o 估计的子树耗用时间 执行前面部分和这一部分 T-SQL 陈述式的消耗。如果存在多个子树