SQL Server - Buffer Manager 对象

适用范围:SQL Server

缓冲管理器对象提供的计数器用来监视 SQL Server 如何使用以下项:

  • 存储数据页的内存。

  • 用于监视 SQL Server 读取和写入数据库页时的物理 I/O 的计数器。

  • 用于借助高速非易失性存储(如固态硬盘 (SSD))扩展缓冲区高速缓存的缓冲池扩展。

监视 SQL Server 使用的内存和计数器有助于确定以下方面:

  • 是否存在物理内存不足的瓶颈。 如果 SQL Server 无法将经常访问的数据存储在缓存中,则必须从磁盘检索数据。

  • 是否可以通过增加内存或增加可用于数据缓存或 SQL Server 内部结构的内存来提升查询性能。

  • SQL Server 需要从磁盘读取数据的频率。 与其他操作(例如内存访问)相比,物理 I/O 会消耗大量时间。 尽可能减少物理 I/O 可以提高查询性能。

缓冲区管理器性能对象

下表介绍了 SQL Server 缓冲管理器性能对象。

SQL Server Buffer Manager 计数器 说明
Background writer pages/sec 为强制恢复间隔设置而刷新的页数。
缓冲区缓存命中率 指示在缓冲区高速缓存中找到而不需要从磁盘中读取的页的百分比。 该比率是缓存命中总次数与过去几千页访问以来的缓存查找总次数之比。 经过很长时间后,该比率的变化很小。 由于从缓存中读取数据比从磁盘中读取数据的开销小得多,一般希望该比率高一些。 通常,可以通过增加 SQL Server 的可用内存大小或使用缓冲池扩展功能来提高缓冲区缓存命中率。
Buffer cache hit ratio base 仅限内部使用。
Checkpoint pages/sec 指示由要求刷新所有脏页的检查点或其他操作每秒刷新到磁盘的页数。
Database pages 指示缓冲池中包含数据库内容的页数。
Extension allocated pages 缓冲池扩展文件中非空闲高速缓存页的总数。
Extension free pages 缓冲池扩展文件中空闲高速缓存页的总数。
Extension in use as percentage 缓冲区管理器页占用的缓冲池扩展分页文件的百分比。
Extension outstanding IO counter 缓冲池扩展文件的 I/O 队列长度。
Extension page evictions/sec 每秒从缓冲池扩展文件中逐出的页数。
Extension page reads/sec 每秒从缓冲池扩展文件中读取的页数。
Extension page unreferenced time 未被引用时,页在缓冲池扩展中保留的平均时长(以秒计)。
Extension pages writes/sec 每秒向缓冲池扩展文件中写入的页数。
Free list stalls/sec 指示每秒必须等待空闲页面的请求数量。
Integral Controller Slope 缓冲池的集成控制器上次使用的斜率,乘以 -100 亿。
Lazy writes/sec 指示缓冲区管理器惰性编写器每秒写入的缓冲区数。 “惰性编写器”是一个系统进程,用于成批刷新过期的脏缓冲区(包含更改的缓冲区,必须将这些更改写回磁盘,才能将缓冲区重用于其他页),并使它们可用于用户进程。 惰性编写器不需要为创建可用缓冲区而频繁执行检查点。
Page life expectancy 指示页面在没有引用的情况下,在此节点的缓冲池中停留的时间(以秒计)。
Page lookups/sec 指示每秒要求在缓冲池中查找页的请求数。
Page reads/sec 指示每秒发生的物理数据库页读取数。 此统计信息显示的是所有数据库间的物理页读取总数。 由于物理 I/O 成本高昂,因此可以使用较大的数据缓存、智能索引和更高效的查询,或者通过更改数据库设计来最大程度地降低成本。
Page writes/sec 指示每秒发出的物理数据库页写入数。
Readahead pages/sec 指示每秒为预期使用读取的页数。
Readahead time/sec 发出预读所用的时间(微秒)。
Target Pages 缓冲池中理想的页数。

示例

使用 sys.dm_os_performance_counters 动态管理视图上的此 T-SQL 查询,开始浏览此对象中的查询性能计数器:

SELECT * FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%Buffer Manager%';