第 2 课:使用数据库引擎优化顾问

适用范围:SQL Server

数据库引擎优化顾问可帮助你优化数据库、管理优化会话和查看优化建议。 对物理设计结构很熟悉的用户可使用此工具执行探索性数据库优化分析。 数据库优化初学者也可使用此工具为其优化的工作负荷找到最佳物理设计结构配置。 本课程为不熟悉数据库引擎优化顾问图形用户界面的数据库管理员以及可能不了解物理设计结构的系统管理员提供了基本实践。

先决条件

要完成本教程,需要 SQL Server Management Studio、针对运行 SQL Server 的服务器的访问权限以及 AdventureWorks2025 数据库。

有关在 SSMS 中还原数据库的说明,请参阅 使用 SSMS 还原数据库备份

注意

本教程适用于熟悉使用 SQL Server Management Studio 和基本数据库管理任务的用户。

调整工作负载

使用数据库引擎调优顾问为您选择进行调优的数据库和表查找最佳物理数据库设计,以优化查询性能。

  1. 复制示例 SELECT 示例 语句,并将该语句粘贴到 SQL Server Management Studio 的查询编辑器中。 将文件另存到一个可以轻松找到的目录中,文件名为 MyScript.sql。 以下代码中提供了一个适用于 AdventureWorks 数据库的示例。

    USE [AdventureWorks2022];
    GO
    
    -- Might need to modify database name to match database
    SELECT DISTINCT pp.LastName,
                    pp.FirstName
    FROM Person.Person AS pp
         INNER JOIN HumanResources.Employee AS e
             ON e.BusinessEntityID = pp.BusinessEntityID
    WHERE pp.BusinessEntityID IN (
        SELECT SalesPersonID
        FROM Sales.SalesOrderHeader
        WHERE SalesOrderID IN (
            SELECT SalesOrderID
            FROM Sales.SalesOrderDetail
            WHERE ProductID IN (
                SELECT ProductID
                FROM Production.Product AS p
                WHERE ProductNumber = 'BK-M68B-42')));
    

    保存 SQL 查询的屏幕截图。

  2. 启动数据库引擎优化顾问。 在 SQL Server Management Studio (SSMS) 的“工具”菜单中,选择“数据库优化顾问”。 有关详细信息,请参阅启动数据库引擎优化顾问。 在“连接到服务器”对话框中,连接到 SQL Server。

  3. 在数据库引擎优化顾问 GUI 右窗格的“常规”选项卡中,键入MySession会话名称

  4. 选中“工作负载”下的“文件”,然后选择双筒望远镜图标,以浏览工作负载文件。 在步骤 1 中保存的 MyScript.sql 文件找到。

    查找之前保存的脚本的屏幕截图。

  5. 数据库中选择 AdventureWorks2025 进行工作负荷分析 列表,选择 AdventureWorks2025 网格中的 ,然后选择 保存优化日志。 “用于工作负荷分析的数据库”指定数据库引擎优化顾问在优化工作负荷时连接到的第一个数据库。 优化开始之后,数据库引擎优化顾问连接到由工作负荷中包含的 USE DATABASE 语句所指定的数据库。

    db 的 DTA 选项的屏幕截图。

  6. 选择“ 优化选项 ”选项卡。你没有为这种做法设置任何优化选项,但花点时间查看默认优化选项。 按 F1 键可查看该选项卡式页面的帮助。 选择 “高级选项 ”以查看更多优化选项。 在“高级优化选项”对话框中选择“帮助”,了解有关显示在那里的优化选项的信息。 选择 “取消” 以关闭 “高级优化选项 ”对话框,使默认选项处于选中状态。

    DTA 优化选项的屏幕截图。

  7. 选择工具栏上的 “开始分析 ”按钮。 在数据库引擎优化顾问分析工作负荷时,可以监视“进度”选项卡上的状态。优化完成后,“建议”选项卡随即显示。

    如果收到有关优化结束日期和时间的错误,请检查主“优化选项”选项卡上的“结束时间”。请确保“结束时间”的日期和时间晚于当前的日期和时间,必要时可进行更改。

    启动 DTA 分析的屏幕截图。

  8. 分析完成后,通过选择“作”菜单上的“保存建议”,将建议另存为 Transact-SQL 脚本。 在“ 另存为 ”对话框中,导航到要在其中保存建议脚本的目录,然后键入文件名 MyRecommendations

    保存 DTA 建议的屏幕截图。

查看优化建议

  1. 在“建议”选项卡上,使用选项卡式页面底部的滚动条可以查看所有“索引建议”列。 每行表示数据库引擎优化顾问建议删除或创建的数据库对象(索引或索引视图)。 滚动到最右侧的列并选择 “定义”。 数据库引擎优化顾问将显示“SQL 脚本预览”窗口,从中可以查看创建或删除该行中的数据库对象的 Transact-SQL 脚本。 选择 “关闭 ”以关闭预览窗口。

    如果很难找到包含链接 的定义 ,请选择清除选项卡式页面底部的“ 显示现有对象 ”复选框。 此操作将减少显示的行数。 当您清除此复选框时,数据库引擎优化顾问将仅显示其生成建议的对象。 选中“显示现有对象”复选框,可以查看 数据库中当前存在的所有数据库对象。 使用选项卡式页面右侧的滚动条可以查看所有对象。

    DTA 索引建议的屏幕截图。

  2. 在“索引建议”窗格中右键单击网格。 在右键单击后出现的菜单中,您可以选择或取消选择建议。 您还可以使用此菜单更改网格文本的字体。

    索引建议的“选择”菜单的屏幕截图。

  3. “作 ”菜单上,选择“ 保存建议 ”,将所有建议保存到一个 Transact-SQL 脚本中。 将脚本 MySessionRecommendations.sql命名为 .

    MySessionRecommendations.sql SQL Server Management Studio 的查询编辑器中打开脚本以查看它。 可以通过在查询编辑器中执行脚本来将建议应用于 AdventureWorks2025 示例数据库,但不要这样做。 不运行该脚本,直接在查询编辑器中将其关闭。

    作为另一种方法,您还可以在数据库引擎优化顾问的操作菜单中选择应用建议来实施建议,但在本次练习中不要应用这些建议。

  4. 如果“建议”选项卡上存在多个建议,请清除“索引建议”网格中列出数据库对象的某些行。

  5. 操作菜单上,选择评估建议。 数据库引擎优化顾问创建新的优化会话,用于评估来自MySession的原始建议的子集。

  6. 键入 EvaluateMySession 新的 会话名称,然后选择工具栏上的 “开始分析 ”按钮。 为此新的调优会话重复步骤 2 和步骤 3 以查看其建议。

总结

如果在运行会话后必须更改优化选项,则可能需要评估优化建议的子集。 例如,在为会话指定优化选项时,你可能会要求数据库引擎优化顾问考虑索引视图,但在生成建议后,你决定不使用索引视图。

使用“操作”菜单上的“评估推荐”选项,令数据库引擎优化顾问再评估会话,而无需考虑索引视图。 使用“评估建议”选项时,先前生成的建议会被假设性地应用于当前物理设计,以便为第二次优化会话确定物理设计。

可以在“ 报告 ”选项卡中查看更多优化结果信息,本课的下一个任务对此进行介绍。

查看优化报告

尽管查看实现优化结果的脚本很有用,但数据库引擎优化顾问还提供许多有用的报告,你可以查看这些报表。 这些报表提供有关要优化的数据库中现有物理设计结构的信息,以及有关建议的结构的信息。 通过选择优化报表选项卡查看相关报表。

  1. 在数据库优化顾问中,选择“报告”选项卡。

  2. 在“优化摘要”窗格中,可以查看有关此优化会话的信息。 使用滚动条可以查看所有窗格内容。 请注意查看“预期的提高百分比”和“建议使用的空间”信息。 设置优化选项时,可以限制建议使用的空间。 在“优化选项”选项卡上,选择“高级选项”。 选中“定义建议所用的最大空间”,并以 MB 为单位指定建议配置可以使用的最大空间。 使用帮助浏览器中的“后退”按钮可返回到本教程。

    DTA 优化摘要的屏幕截图。

  3. 在“优化报表”窗格中,在“选择报表”列表中选择“语句成本报表”。 如果需要更多空间以查看报表,则将“会话监视器”窗格边框拖动到左侧。 执行在数据库表上的每个 Transact-SQL 语句都会产生性能开销。 通过在表中经常访问的列上创建有效索引来降低此性能成本。 此报告显示了在工作负载中执行语句的原有开销与实现优化建议后的开销相比,估计的提高百分比。 报表中包含的信息量取决于工作负荷的长度和复杂性。

    DTA 报表 - 帐单成本的屏幕截图。

  4. 右键单击网格区域中的语句成本报表窗格,然后选择导出到文件。 将报表另存为 MyReport。 文件名后会自动附加 .xml 扩展名。 可以在喜欢的 XML 编辑器或 SQL Server Management Studio 中打开 MyReport.xml 以查看报表内容。

  5. 返回数据库引擎优化顾问的“报告”选项卡,并再次右键单击“语句开销报告”。 查看其他可用选项。 可以更改要查看的报表的字体。 更改此处的字体也会更改其他选项卡式页面上的字体。

  6. “选择报表 ”列表中选择其他报表以熟悉它们。

总结

你浏览了数据库引擎优化顾问 GUI 的 报告 选项卡,用于 MySession 优化会话。 可以使用这些步骤来浏览为 EvaluateMySession 优化会话生成的报表。 双击“会话监视器”窗格中的 EvaluateMySession 开始该会话。

后续步骤