在 MSSQL 中查找资源使用详细信息

在运行 MSSQL 或 Microsoft SQL Server 时,我们需要确定它是否经过优化,或者是否需要更多资源才能获得更好的性能。 本文回顾了要寻找哪些行为,在哪里可以找到它们,以及如何查看痛苦的迹象。

需要考虑的资源因素

在我们开始查找资源使用细节之前,让我们看一下 MSSQL 依赖的四个关键资源:

  • CPU/处理器
  • RAM内存
  • 磁盘 I/O
  • 网络 I/O

由于 Microsoft SQL Server 在资源有限的操作系统上运行,因此我们需要确定已分配足够的 CPU、内存、磁盘空间和网络资源来运行 MSSQL、操作系统和系统上安装的其他软件。 限制系统储备会导致其他软件与MSSQL竞争资源,从而对系统的整体性能产生负面影响。

让我们看看每种资源如何影响系统的性能,尤其是 MSSQL:

CPU/处理器

这是系统中的主要组件,它决定了它可以协调其他组件以处理操作系统和应用程序(包括 MSSQL)的任务的速度。 如果您的处理器速度较慢、处理器单一或内核不足,您的系统可能会运行缓慢。 一般来说,更多的 CPU、内核和更快的时钟速度可以带来更好的性能,从而使系统运行得更快。

记忆

这是系统中决定整体性能的第二个最重要的组件。 如果没有足够的内存来运行操作系统和所有其他程序和应用程序,操作系统将退回到利用虚拟内存将内存内容交换到磁盘存储。 分页会降低系统性能,但允许它使用比内存正常容量更多的元素。 虽然拥有虚拟内存比耗尽内存更可取,但它总是会降低性能并且不太理想。 通常,您拥有的内存越多,系统的性能就越好。

磁盘驱动器

硬盘用于存储无法装入内存的数据。 由于大多数系统的内存无法容纳数 TB 的数据,因此我们依靠硬盘驱动器 (HDD) 或固态驱动器 (SSD) 来提供一种改进的存储方式以及将内容移入和移出内存的方法。 驱动器的速度(将数据传输到内存或从内存传输到磁盘时)是一个重要的性能考虑因素。 HDD 通常比 SSD 更慢且容量更大。 SSD 速度更快,并且具有没有移动部件的优势。 通常,HDD 的容量更大,SSD 的速度更快,并且两者都可以设置在旨在提高系统性能和可靠性的配置中。

网络

网络是客户端连接到服务器以从 MSSQL 发送和接收数据的方式。 如果 SQL 查询需要大量的网络数据传输,或者有很多客户端连接,它会降低系统速度。 将网络视为数据流经的管道。 通过更大的管道移动大量数据会更快,但是随着管道变大,成本也会增加。 对于 MSSQL,我们首先寻找优化查询的方法,然后考虑存储过程是否可以在服务器上执行,而不是通过网络拉取所有数据在客户端进行处理。

MSSQL 中的性能问题

MSSQL 中的性能问题可以追溯到四种主要资源(CPU、内存、磁盘、网络)中的一种或多种中的问题。 以下是每个资源如何影响其他资源性能的几个示例。

  1. 如果性能问题是由于内存不足造成过多分页,则添加更多内存会减少 CPU 和磁盘资源的活动。
  2. 添加更多内存还允许 MSSQL 存储更多数据而无需对其进行分页。 此外,增加到更快的存储介质可以提高系统的性能,从而实现更快的数据移动。 这也将允许处理器和内存更有效地处理包括 MSSQL 在内的所有任务。
  3. 在大多数数据库应用程序中,最密集的过程包括将存储的数据读入内存、修改内存中的数据以及将数据重写回磁盘。 大多数系统没有足够的内存来将多个大型数据库完全读入内存,因为它们依赖于磁盘分页。 添加内存和磁盘存储是提高 MSSQL 性能的改进方法。
  4. 添加更多或更快的 CPU 将使系统能够更有效地处理工作负载。 如果较慢的处理器无法有效完成分配的任务,则会导致响应查询出现瓶颈,并可能延迟传输数据。

获取资源使用情况

现在我们了解了资源如何影响 MSSQL 性能,我们可以看看三种获取资源使用信息的方法

  • 任务管理器,性能选项卡
  • 资源监视器
  • SQL Server Management Studio (SSMS) 报告和查询

您可能希望通过下面提到的知识库文章探索任务管理器、资源监视器和 SQL Server Management Studio 以获取更多详细信息。

/kb/setup-use-microsoft-sql-server-management-studio/

/kb/check-server-load-windows-server/

任务管理器

要启动任务管理器,请单击开始菜单并键入任务,然后从结果中选择任务管理器。

性能选项卡是我们快速了解 MSSQL 和整个系统如何利用 CPU、内存和网络的地方。 请记住,该图表仅显示在一分钟内发生的情况。 在我们认为可能存在问题的一段时间内监控系统性能可以显示峰值和/或趋势,这可以帮助我们确定资源是否维持在高水平,或者问题是否是暂时的。

中央处理器

CPU 信息为我们提供了内核数量、类型、速度和活动处理器的数量。 我们要检查的主要信息是查看 CPU 是否持续运行在 90% 以上。 这意味着系统可能无法跟上资源需求,这将导致系统变慢。

性能.cpu.10.11.19中央处理器性能

记忆

这为我们提供了系统上的内存总量、当前正在使用的内存以及可用的剩余内存。 提交的值显示磁盘上的虚拟内存和页面文件。 缓存显示正在使用的内容,分页池是可分页的内核内存,当内存开始不足时可以分页到磁盘。

性能.内存.10.11.19性能记忆

以太网

这向我们展示了网络适配器正在使用的资源。 图中的线显示发送和接收吞吐量。 如果我们看到非常高的吞吐量,这可能表明 MSSQL 或其他进程正在推送大量数据。 这可能表明需要审查和优化查询。 此外,这可能表明需要检查创建本地存储过程以在服务器上执行,而不是通过网络推送数据以在客户端运行查询。 此外,您可以通过右键单击图表来收集更详细的信息。

性能.network.10.11.19网络性能

资源监视器

资源.monitor.10.11.19

要启动资源监视器,请单击开始菜单并键入资源,然后选择资源监视器。 资源监视器为我们提供了更精细的详细信息,按我们前面提到的四个关键资源进行细分:CPU、内存、磁盘和网络。

resource.monitor.overview.10.11.19资源监视器概述

概览选项卡具有展开和折叠部分,允许同时查看多个区域以及排序选项。 如果您发现 MSSQL 在 CPU、内存、磁盘和网络的列表中名列前茅,并且资源持续达到或高于 90%,这很好地表明系统的性能正在受到影响并且可以从优化中受益和/或硬件升级。

单击单个资源选项卡将提供有关每个资源的完整详细信息,独立于其他资源。

Microsoft SQL Server 管理工作室

mssql.server.icon.10.11.19

当我们启动 SSMS 时,我们连接到 MSSQL 服务器。 如果我们在本地访问服务器,我们可以使用 localhost 或服务器名称。 如果我们从远程系统或网络访问它,我们将使用 IP 地址进行连接。

连接到服务器 10.11.19连接到服务器

对象资源管理器

SSMS 打开后,我们可以运行报告以获取有关 MSSQL 如何利用其资源的有用信息。 在对象资源管理器中,右键单击顶部的服务器名称并选择报告。 一些最常用的报告可直接从报告菜单中获得,而其他报告则可从标准报告中获得。

短信报告.10.11.19短信报告

让我们看看我们可以用来获取更多资源信息的一些选项。

MSSQL 性能仪表板

此报告将显示特定于 SQL 和其他(MSSQL 除外)的系统 CPU 利用率。 当我们需要查看 SQL 实际使用了多少 CPU 时,这很有帮助。 您还可以查看当前用户请求和具有内存缓存命中率的会话,以及访问昂贵的查询和其他有用信息。

mssql.server.dashboard.10.11.19mssql 服务器仪表板

MSSQL 内存消耗

此报告将显示特定于 SQL 的内存消耗,包括页面预期寿命和 Top Memory Consuming Components,以可视化 SQL 正在使用的内存量。

mssql.memory.consumption.10.11.19mssql 内存消耗

MSSQL 性能 – 按平均 CPU 时间排列的热门查询

此报告将显示平均 CPU 时间和总 CPU 时间的前 10 个查询。 还提供了可以帮助识别可能从优化中受益的查询的附加信息。

mssql.performance.top.queries.10.11.19mssql 性能排名靠前的查询

使用 Transact SQL (T-SQL) 的 MSSQL 昂贵查询

您可以通过在 SSMS 中运行它们来自定义报告并获取有关昂贵查询的更多详细信息。 以下是一些链接,它们将提供有关昂贵查询的 T-SQL 语句的更多信息:

How to identify the most costly SQL Server queries using DMV’s

SQL SERVER – Find Most Expensive Queries Using DMV

要启动新查询,请单击菜单中的新查询选项。

mssql.new.query.10.11.19mssql 新查询

使用链接中可用的查询语句之一,复制并粘贴或在查询语句窗口中键入查询,然后单击执行以运行查询并生成结果:

mssql.query.statement.window.10.11.19mssql查询语句窗口

以下是上述查询的结果:

mssql.query.results.10.11.19mssql查询结果

您可以滚动到右侧并单击链接以在布局视图中显示查询计划,该视图按每个组件分解成本。

mssql.query.plan.layout.10.11.19mssql 查询计划布局

MSSQL 活动 – 热门连接

此报告将提供有关您的 MSSQL Server 有多少连接的想法。 您还可以按读取次数和写入次数查看前 10 个连接。 当您需要查看通过网络连接移动了多少数据时,这很有帮助。

MSSQL.Activity.Top.Connections10.11.19mssql 活动最高连接数

结论

在本文中,我们学会了识别影响 MSSQL 的四种关键资源。 我们发现了如何使用任务管理器性能选项卡、资源监视器以及 SSMS 报告和查询来检查系统的资源使用情况。 您现在应该更好地了解如何使用此信息来评估服务器的性能并识别潜在的性能瓶颈以确定解决它们的最佳方法。

立即与专家交谈!

MSSQL 优化可能是一项艰巨的任务。 幸运的是,Liquid Web 有专家每天 24 小时待命,以协助完成这项工作。 我们拥有内部的专业知识来提高您的服务器的稳定性并微调您的配置,从而为您的网站提供更好的基础。 如果出现问题或问题,我们的专业技术人员可以随时为您接手。