个复合操作的评估执行的计划窗格显示在图35-10。
图35-10 显示在评估执行的计划窗格中的总计操作
检视预存程序
要显示预存程序的执行计划,可以简单的在 Query Analyzer 中呼叫预存程序。Query Analyzer 会显示所呼叫预存程序的评估执行计划,如图35-11所示的 sp_who。(需要注意的是,预存程序的执行计划相当复杂)。即使不确定组成预存程序的 T-SQL 陈述式,也可以显示该预存程序的执行计划。
图35-11 在评估执行的计划窗格中的预存程序
使用对象浏览器
对象浏览器(Object Browser)包含在 SQL Server 2000 中,用来提升 Query Analyzer 的功能。启动 Query Analyzer 时,会在左边窗口看到 对象浏览器 。 对象浏览器 分成数据库对象区和通用对象区两部份。在数据库对象区,可以浏览像数据表和检视表等对象;在通用对象区,可以存取系统对象和菜单。可以利用 物件浏览器 找出所提供的信息后,然后决定用的信息。
数据库对象
对象浏览 顶端部份含有数据库对象,可以立即看到预设数据库以及所建立的数据库,并显示所属的 SQL Server。想要知道在 对象浏览 之中有哪些可用信息,只要展开对象即可。先展开 Northwind 数据库,然后展开 使用者数据表 。现在可看到 Northwind 数据库中可用的数据表,如图35-12所示。
图35-12 检视对象浏览中的数据表
接着展开一个使用者定义数据表,然后展开包含关于字段、索引、条件约束、资源依存性、触发程序信息的数据夹。图35-13显示展开的 Orders 数据表。或者可以展开数据夹,检视关于系统数据表、检视表、预存程序、功能和使用者定义数据类型的信息。
在 Query Analyzer 中提供对象信息,是相当方便的,这样在建立 SQL 陈述式和预存程序时,就不需要再检查 Query Analyzer 以外的对象信息。不但可以在 对象浏览 中检视信息,还可以编辑对象、拖曳对象,甚至可以建立指令码和修改对象,将功能加在一个已经很实用的工具中。
图35-13 展开在对象浏览中的数据表
通用对象
在 对象浏览 较下面的部份是名为通用对象(Common Objects)的数据夹,这个数据夹中包含了如设定功能、光标功能、日期和时间功能以及数学功能等对象信息的数据夹。因此您可以很快地存取一个要使用的功能而不须查询语法。在这个区域展开数据夹的话,将显示设定选项,如图35-14所示。将这些功能拖曳到 Query 窗格中,或者用鼠标点选这个功能以显示一个简要描述。这对于 ad-hoc 查询过程是相当方便的。
图35-14 在对象浏览的通用对象中展开一个数据夹
除了存取全域变量之外,您还可以存取很多其它有用的快捷菜单,如数学和字符串功能。继续展开对象,您可以用这些菜单得到参数要求的信息。例如,图35-15显示展开 数学函数 中的 参数 数据夹。
图35-15 检视对象浏览中的参数数据夹
使用SQL Profiler
除了 Query Analyzer 以外,SQL Profiler 工具也可以帮助找出低效率的 T-SQL陈述式。Profiler 可以显示所有系统中执行的 T-SQL 陈述式,并用图形加以显示。您也可以使用多种排序和筛选选项,找出使用了最多 CPU 和 I/O 资源的 T-SQL 陈述式。有了这些信息就可以确定在调整系统时需要集中焦点在哪些 T-SQL 陈述式上。对于透过应用程序呼叫的 T-SQL 陈述式,可以检视 T-SQL 陈述式,并决定利用存取应用程序来源程序代码时的效率如何。
SQL Server 2000 中的 Profiler 工具类似 SQL Server 7 中的 Profiler 工具,当然有些加强的功能。其中一项新功能是引用追踪模板,用来建立追踪档案。(在确定能够使用这个功能追踪 SQL Server 之后,追踪才能建立)。在 SQL Server 7 中,追踪功能只能以手动建立。
要呼叫 Profiler 工具并执行追踪,请遵循下列步骤:
1. 按一下 开始 / 程序集 / Microsoft SQL Server / Profiles 。在 Profiler 刚出现时,会看到一个空的 Profiler 窗口。在 Profiler 中如果没有打开任何窗格,就不会剖析任何陈述式。
2. 要开始分析,必须选择已存在的追踪模式,或是建立一个新的追踪模式。(启动过程将在步骤4介绍)。SQL Profiler 提供数种追踪模式。使用这些功能由于不必从 scratch 建立追踪,因此节省不少时间。要检查追踪清单,请在 档案 菜单中点选 开启旧档 ,选择 追踪模板 ,显示 开启旧文件 对话框,如图35-16所示。
图35-16 开启旧文件对话框中显示可用的追踪
SQL Server 中的追踪描述如下:
o SQLServerProfilerSP_Counts.tdf 统计已经执行预存程序的数量。这个结果将根据预存程序的名称进行分组,其中包括程序所执行的次数。
o SQLServerProfilerStandard.tdf 收集关于连结点的信息,执行预存程序,以及依序执行 SQL 批次檔。
o SQLServerProfilerTSQL.tdf 收集所有的 T-SQL 陈述式传送至 SQL Server 的次序且依使用者团体分类传送。这个追踪包含了 T-SQL 陈述式以及它所执行的时间。
o SQLServerProfilerTSQL_Duration.tdf 显示执行的 T-SQL 陈述式,以及这些 T-SQL 陈述式执行所用的时间(一千分之一秒为单位)。
o SQLServerProfilerTSQL_Grouped.tdf 收集与 SQLServerProfilerTSQL 追踪类似的数据,但是根据传送陈述式的使用者来将数据分组。
o SQLServerProfilerTSQL_Replay.tdf 提供关于已经执行的 T-SQL 陈述式的详细信息。该追踪提供可以用来重新执行 Query Analyzer 中 T-SQL 陈述式的数据。
o SQLServerProfilerTSQL_SPs.tdf 显示预存程序以及预存程序中的 T-SQL指令。该结果根据陈述式执行的时间依序显示。
o SQLServerProfilerProfilerTuning.tdf 收集关于预存程序和执行 SQL 批次文件的数据。
这些追踪相当有用。例如 SQLServerProfilerTSQL_Duration 追踪可找出哪些T-SQL 陈述式花费了大量的执行时间。这些信息使您可以开始最佳化查询。一个陈述式执行得很慢,可能是因为它的工作量很大,或者效率很低。在下一个步骤中将说明,必须使用每个追踪的预设定义。
3. 要启动追踪,请选取 档案 / 新增 ,接着选择 追踪 。显示 联机到SQL Server 对话框,如图35-17所示。在这个对话框中,选择要追踪的 SQL Server 系统,然后按 确定 。
图35-17 联机到SQL Server对话框
4. 进入 追踪属性 窗口,如图35-18所示。在 一般 页签,可以命名并选择追踪的起始点。本范例是选择 SQLServerProfilerTSQLDuration 追踪。在页签下