适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric 预览版中的 SQL 数据库
对共享资源同时访问会导致瓶颈。 通常,每一软件系统都不可避免地存在瓶颈。 然而,对共享资源的过多需求将导致响应时间过长,因此必须进行识别和优化。
导致瓶颈的原因包括:
- 资源不足,需要添加或升级组件。 
- 工作负荷在同类资源之间分布不均(例如,一个磁盘被独占)。 
- Malfunctioning resources. 
- 资源配置不正确。 
Analyzing Bottlenecks
如果有多个事件的持续时间都过长,则表明存在能被优化的瓶颈。
For example:
- 当某项工作试图访问某个组件时,某些其他组件可能加以妨碍,从而延长完成该工作所需的时间。 
- 客户端请求可能因网络阻塞而花费更长时间。 
下面是跟踪服务器性能以识别瓶颈时应监视的五个主要方面。
| 可能的瓶颈方面 | 对服务器的影响 | 
|---|---|
| Memory usage | 分配的内存不足或可由 Microsoft SQL Server 使用的内存不足导致性能下降。 数据必须从磁盘读取而非直接从数据缓存读取。 当需要页时,Microsoft Windows 操作系统将通过与磁盘交换数据来执行大量分页操作。 | 
| CPU utilization | 长期的高 CPU 使用率可能表明 Transact-SQL 查询需要优化或 CPU 需要升级。 | 
| 磁盘输入/输出 (I/O) | Transact-SQL 可以优化查询以减少不必要的 I/O(例如,使用索引)。 | 
| User connections | 可能有太多用户同时访问服务器,从而导致性能下降。 | 
| Blocking locks | 应用程序设计不合理可能导致锁定或妨碍并发,因而导致更长的响应时间和更低的事务吞吐速度。 | 
See Also
              监视 CPU 用量
              监视磁盘用量
              监视内存用量
              SQL Server - General Statistics 对象
              SQL Server - Locks 对象