监视 SQL Server 组件

适用于: SQL Server

监视操作非常重要,因为 SQL Server 在动态环境中提供服务。 应用程序中的数据在变化。 用户需要的访问类型在变化。 用户连接的方式在变化。 甚至,访问 SQL Server 的应用程序的类型也可能在变化,而 SQL Server 自动管理系统级资源(如内存和磁盘空间),以便最小化对广泛系统级手动优化的需要。 管理员可以通过监视来标识性能趋势以确定是否有必要进行更改。

有效地监视任何 SQL Server 组件:

  1. 确定监视目标。
  2. 选择相应工具。
  3. 标识要监视的组件。
  4. 选择那些组件的度量。
  5. 监视服务器。
  6. 分析数据。

下面将依次介绍这些步骤。

确定监视目标

若要有效监视 SQL Server,必须清楚地确定监视原因。 下面列出了可能的原因:

  • 建立性能基线。
  • 标识一段时间内的性能变化。
  • 诊断特定性能问题。
  • 标识要优化的组件或进程。
  • 比较对不同客户端应用程序性能的影响。
  • 审核用户活动。
  • 在不同负荷下测试服务器。
  • 测试数据库体系结构。
  • 测试维护计划。
  • 测试备份和还原计划。
  • 确定何时修改硬件配置。

选择相应工具

确定监视原因后,应该为该监视类型选择相应的工具。 Windows 操作系统和 SQL Server 提供了一整套用于在大型事务环境中监视服务器的工具。 这些工具清楚地显示 SQL Server 数据库引擎实例或 SQL Server Analysis Services 实例的状态。

Windows 提供下列工具来监视在服务器上运行的应用程序:

  • 启动性能监视器窗口,使你可以收集和查看有关活动(如内存、磁盘和处理器使用)的实时数据。
  • 性能日志和警报
  • 任务管理器

有关 Windows Server 或 Windows 工具的详细信息,请参阅 Windows 文档。

SQL Server 提供下列工具来监视 SQL Server 的组件:

重要

已弃用 SQL 跟踪和 SQL Server Profiler。 包含 Microsoft SQL Server 跟踪和重播对象的“Microsoft.SqlServer.Management.Trace”命名空间也已遭弃用。

在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

请改用扩展事件。 有关扩展事件概述的详细信息,请参阅快速入门:扩展事件使用 SSMS XEvent 探查器

注意

针对 Analysis Services 工作负载的 SQL Server Profiler 尚未弃用,我们将继续提供支持。

有关监视 SQL Server 监视工具的详细信息,请参阅性能监视和优化工具

标识要监视的组件

监视 SQL Server 实例的第三步是标识监视组件。 例如,如果使用 SQL Server Profiler 跟踪服务器,则可以定义该跟踪来收集有关特定事件的数据。 还可以排除不适合您的情况的事件。

选择监视组件的度量指标

确定监视组件后,就需要确定监视组件的度量。 例如,选择跟踪中包括的事件后,可以选择只包括有关事件的特定数据。 限制只跟踪与该跟踪有关的数据可最大限度减少执行跟踪所需的系统资源。

监视服务器

若要监视服务器,请运行已配置为收集数据的监视工具。 例如,定义跟踪后,可以运行该跟踪以收集有关服务器中生成的事件的数据。

分析数据

跟踪结束后,分析数据以查看是否实现了监视目标。 如果没有,请修改用于监视服务器的组件或度量。

下面概述了捕获事件数据并使用这些数据的过程。

  1. 使用筛选器限制收集的事件数据。

    限制事件数据使系统可以集中在与监视方案有关的事件上。 例如,若要监视执行速度慢的查询,可使用筛选器只监视那些在特定数据库中运行 30 秒以上的应用程序发出的查询。

    有关筛选扩展事件跟踪的详细信息,请参阅快速入门:扩展事件

    有关筛选 SQL 跟踪的详细信息,请参阅设置跟踪筛选器 (Transact-SQL)在跟踪中筛选事件 (SQL Server Profiler)

  2. 监视(捕获)事件。

    一旦启用,主动监视就从指定的应用程序、SQL Server 实例或操作系统捕获数据。 例如,当使用系统监视器监视磁盘活动时,监视将捕获事件数据(如磁盘读取和写入)并在屏幕上显示该数据。 有关详细信息,请参阅监视资源使用情况(性能监视器)

  3. 保存捕获的事件数据。

    保存捕获的事件数据使你可以在以后对其进行分析。 捕获的事件数据将保存到文件,该文件可以加载回最初创建它的工具中以进行分析。 保存捕获的事件数据对创建性能基线非常重要。 在比较最近捕获的事件数据来确定是否已获得最佳性能时,将保存并使用性能基线数据。

    扩展事件使你可以将事件数据保存到事件文件、事件计数器、直方图和环形缓冲区。 有关详细信息,请参阅扩展事件的目标

    甚至可以使用分布式重播实用工具或 SQL Server Profiler 来重播 SQL 跟踪事件数据。 SQL Server Profiler 允许将事件数据保存到文件或 SQL Server 表。 有关详细信息,请参阅 SQL Server Profiler 模板和权限

  4. 创建包含为捕获事件所指定设置的跟踪模板。

    跟踪模板包括有关事件本身、事件数据和用于捕获数据的筛选器的规范。 这些模板可用于以后监视特定事件集,而无需重新定义事件、事件数据和筛选器。 例如,若要频繁监视死锁数以及那些死锁所涉及的用户,您可以创建一个模板来定义那些事件、事件数据和事件筛选器;保存此模板;并在下次监视死锁时重新应用此筛选器。

    扩展事件会话定义是可进行脚本编写并重新使用的模板。 若要创建和管理会话,请参阅在对象资源管理器管理事件会话。 Management Studio XEvent Profiler 已提供可供使用的模板。 有关详细信息,请参阅使用 SSMS XEvent Profiler

    为此,SQL Server Profiler 使用跟踪模板。 有关详细信息,请参阅设置跟踪定义默认值 (SQL Server Profiler)创建跟踪模板 (SQL Server Profiler)

    提示

    SQL 跟踪定义可以转换为扩展事件会话。 有关详细信息,请参阅将现有 SQL 跟踪脚本转换为扩展事件会话

  5. 分析捕获的事件数据。

    为了进行分析,将捕获的事件数据加载到捕获该数据的应用程序中。

    例如,可以将捕获的扩展事件跟踪重新加载到 SQL Server Management Studio 以进行查看和分析。 有关详细信息,请参阅在 SQL Server Management Studio 中查看事件数据

    可以将 SQL 跟踪数据重新加载到 SQL Server Profiler 进行查看和分析。 有关详细信息,请参阅 使用 SQL Server Profiler 查看和分析跟踪

    对事件数据的分析包括确定所发生的事件和发生原因。 利用这些信息可以做一些更改(如根据所执行的分析类型添加更多内存、更改索引、更正使用 Transact-SQL 语句或存储过程的编码问题等)来提高性能。 例如,可以使用数据库引擎优化顾问,分析通过扩展事件或 SQL Server Profiler 捕获的跟踪并根据结果生成索引建议。

  6. 重播捕获的事件数据(可选)。

    事件重播使您可以建立捕获数据时的数据库环境的测试副本,然后可以重复捕获的事件,就像最初在真实系统上捕获事件一样。 此功能仅适用于分布式重播实用工具或 SQL Server Profiler。 可以按事件最初发生时的速度重播它们,尽可能快地重播(增加系统的压力),或者尽可能一次重播一步(每个事件发生后对系统进行分析)。 通过在测试环境中分析确切事件,可以防止对生产系统产生有害影响。 有关详细信息,请参阅 重播跟踪