SQL Server性能计数器架构

  1. WINDOWS性能计数器介绍

操作系统可以使用性能监视器图形工具来测量系统、应用程序、服务、驱动程序的性能信息。通过性能计数器可以查看SQL Server对象、性能计数器以及其他对象的行为,这些对象包括处理器、内存、缓存、线程和进程。每个对象都有一个相关的计数器集,用于测量设备的使用情况、队列长度、延迟情况。

为了方便批量管理,可以通过命令语句查看和添加计数器。PerfMon.exe中可以查看性能对象、性能计数器和对象实例,可通过添加计数器来查看相关描述信息。TypePerf.exe可以把Windows操作系统的性能计数器数据输出到命令窗口或写入到支持该功能的日志文件格式中。

  1. SQL Server计数器收集、统计架构图

从图中可以看出

  1. 生产服务器通过ODBC访问监控监控服务器的SQLPerfData,将数据写入该数据库。
  2. 通过作业计算将写入SQLPerfData的数据写入到SQLPerfDataStat数据库。

    1. SQL Server计数器部署方案

我们通过ODBC直接访问到监控服务器的数据库,每15秒钟将数据传输到监控服务器;SQL Server数据库需要监控的性能包括:CPU、IO、内存、网络、SQLServer阻塞、并发、缓存等;我们选择了64个计数器,每个服务器的计数器实例个数不同,经过筛选最终每个服务器达到百个以上计数器实例;计数器的详细属性和用处请查看计数器属性详解。如此多的计数器,我们采用脚本批量部署,具体方式可以查看文档《SQL Server性能计数器部署_HuangCH_20141202》

  1. SQL Server计数器收集汇总检查方案

如上图所示,计数器架构分别存储三个数据库SQLPerfData、SQLPerfDataStat、SQLPerfDataStat_Histroy;这三个计数器的功能具体如下:

  1. SQLPerfData接收计数器信息

DisplayToID:计数器自动生成,记录计数器启动信息

CounterDetails:计数器自动生成,记录计数器的基本信息

CounterData:记录计数器传入的数据

?

?

  1. SQLPerfDataStat统计计数器信息

基本信息模块:

CounterDetails_Collect:用于同步 CounterDetails表数据,用于轮训统计

CounterDetails_Collect_bak:无用计数器备份

CounterDetails_Dts:统计传输控制表,以服务器为单位,记录服务器统计传输时间。

CounterDetails_Report:同步CounterDetails_Collect表信息,通过优化,用于报表显示作用。

?

数据模块:

CounterData_FifteenSeconds:15秒数据收集,用于同步CounterData表数据。

CounterData_OneMinute:一分钟数据收集,15秒数据均值计算而成;适合查看当天数据。保留7天数据。

CounterData_FiveMinute:五分钟数据收集,一分钟数据均值计算而成;适合查看4天内数据。保留7天数据。

CounterData_HalfHour:30分钟数据收集,一分钟数据均值计算而成;适合查看一周内数据。保留7天数据。

CounterData_OneHour:一小时数据收集,一分钟数据均值计算而成;适合查看一个月内数据。保留永久

CounterData_SixHour:六小时数据收集,一分钟数据均值计算而成;适合查看一年内数据。保留永久

?

基线模块:

CBaseCounterData_OneMinute:同比基线,可以计算未来一周的数据走势。保留7天数据。

RBaseCounterData_OneMinute:环比基线,可以计算未来一天的数据走势。保留7天数据。

?

手动维护模块:

CounterTypeDetails:计数器类型和描述信息记录表。

MonitorContorl:手动维护,计数器报警监控控制表。

3、SQLPerfDataStat_Histroy归档计数器信息

CounterData_OneMinute_bak:一分钟数据备份,保留永久。

CounterData_FiveMinute_bak:五分钟数据备份,保留永久。

CounterData_HalfHour_bak:30分钟数据备份,保留永久。

基线模块:

CBaseCounterData_OneMinute_bak:同比基线备份,保留7天。

RBaseCounterData_OneMinute_bak:环比基线备份,保留7天。

  1. SQL Server基线算法

SQL Server计数器算法采用同比和环比两种方式。

同比:可以计算未来一周的基线数据,取近八周同一天同一时刻的均值。同比可以消除由于业务变动带来的波动,具有报警对比价值。下图红线同比数据,表示历史上该时段存在异常升高。

环比:可以计算未来一天的基线数据,取近两周每天同一时刻的均值。环比数据可以说明数据近期走势。具有优化对比价值。从上同比图可以看出117-27-139-238服务器cpu在历史上存在异常升高,下图红线环比比数据,却与蓝线同步,说明此异常在近期已经正常。

?

  1. SQL Server性能报警监控

性能目前监控cpu、磁盘空间,用户并发三者的计数器数值情况,如下图示,具体请查看文档:


监控对象


计数器名称


监控频率


对比数据


CPU


% Processor Time


1分钟


同比


Disk


% Free Space;Free Megabytes


5分钟


阀值


User Connections


User Connections


5分钟


环比

?

  1. 计数器属性详解

常规计数器

收集操作系统服务器的服务器性能信息,包括Processor、磁盘、网络、内存

  1. Processor 处理器

    1. % Processor Time指处理器用来执行非闲置线程时间的百分比。通过此计数器可以确定服务器当前CPU使用百分比。
    2. % Privileged Time是在特权模式下进程线程执行代码所花时间的百分比。当调用 Windows 系统服务时,此服务经常在特权模式运行,以便获取对系统专有数据的访问。
  2. PhysicalDisk物理磁盘(某个RAID)

    1. Avg. Disk Queue Length等待请求的队列长度,若此值过大,说明磁盘存在瓶颈,自然磁盘延迟的值也会过大。
    2. Avg. Disk sec/Read;Avg. Disk sec/Transfer;Avg. Disk sec/Write这三个计数器表示磁盘每次读写需要多少时间,表示磁盘的延迟情况,以秒为单位,若延迟超过25mm表示磁盘性能较差。
  3. LogicalDisk逻辑磁盘(某个卷)

    1. % Free Space某个磁盘的空闲百分比;Free Megabytes 磁盘剩余大小MB
    2. Disk Read Bytes/sec;Disk Transfers/sec;Disk Write Bytes/sec这三个计数器表示每秒磁盘的读写情况,表示磁盘的IO性能(iops)
  4. Memory 内存

    1. Available Mbytes可以内存大小MB,此内存能立刻分配给一个进程或系统使用。它等于分配给待机(缓存的)、空闲和零分页列表内存的总和。
    2. Cache Bytes 系统使用的内存
    3. Commit Limit可以申请的内存总大小(虚拟内存和物理内存);Committed Bytes已经使用的内存大小(虚拟内存和物理内存);均是以Byte(字节)为单位。
    4. Free System Page Table Entries指系统当前未使用的页表项数目。表示内存是否空闲。
    5. Page Faults/sec 每秒出错页面的数量,也就是未在内存中命中的页面数。因此伴随着Pages/sec计数器是由于出错页面从磁盘读取数据页的速度。此值越大说明内存可能存在一定瓶颈,或者存在大量数据存取。
  5. Network Interface 网络接口

    1. Current Bandwidth指以位/每秒估计的网络接口的当前带宽。对于那些带宽不变的或无法估计出准确数据的界面,这个值为名义带宽。
    2. Bytes Received/sec;Bytes Sent/sec;Bytes Total/sec每秒种发送和接收的字节数,表示当前网络的使用情况。
    3. Output Queue Length输出数据包队列,此值大于2说明传输存在延迟。
    4. Packets Outbound Discarded 被选为丢弃的数据包数目,丢弃的原因可能是释放缓冲空间。Packets Outbound Errors 由于错误不能传输的数据包数目
    5. Packets Received Discarded 被选为丢弃的数据包数目,丢弃的原因可能是释放缓冲空间。Packets Received Errors 由于错误不能传输的数据包数目

SQL Server计数器

SQL Server中的Access Methods对象提供监视访问数据库中的逻辑数据的计数器;Buffer Manager计数器监视对磁盘上的数据库也的物理访问。

  1. Access Methods 存取方式

Access Methods监视用于访问数据库中存储的数据的方法有助于确定是否可以通过添加或修改索引、添加或移动分区、添加文件或文件组、对索引进行碎片整理或者重写查询来提高查询性能。?Access Methods?计数器也可用于监视数据库中数据、索引和可用空间的数量,从而指示每个服务器实例的数据卷和碎片。索引的碎片过多会降低性能。

  1. Page Splits/sec每秒由于索引页溢出而发生的页拆分数。此数据越大表示某表的修改频率较高,且要确认该索引是否适合建立该字段上。
  2. Workfiles Created/sec每秒创建的工作文件数
  3. Worktables Created/sec每秒创建的工作表数
  1. Buffer Manager 缓存管理

    监视用于存储数据页的内存;读取和写入数据库页时的物理io等,通过此对象可以判断是否存在物理内存瓶颈可以了解服务器的查询性能等等。

    1. Buffer cache hit ratio命中高速缓冲区页的百分比。若此值过低说明可能内存存在一定瓶颈
    2. Database pages缓冲池中数据库内容的页数
    3. Page life expectancy页指示页面在没有引用的情况下,在此节点的缓冲池中停留的时间(以秒计)。此值若降低说明,服务器频繁查询数据库中数据。
    4. Checkpoint pages/sec Checkpoint的执行频率,若执行的频率过高。则说明服务器过于频繁的修改数据。
    5. Lazy writes/sec 若懒写入过于频繁,说明没有空闲的缓冲区供使用,内存可能存在一定瓶颈。"惰性编写器"是一个系统进程,用于成批刷新脏的过期的缓冲区(包含更改的缓冲区,必须将这些更改写回磁盘,才能将缓冲区重用于其他页),并使它们可用于用户进程。
  2. Memory Manager 内存管理?

    监视总体的服务器内存使用情况,以估计用户活动和资源使用,有助于查明性能瓶颈。

    1. Memory Grants Pending指定等待工作空间内存授权的进程总数。指等待分配内存的进程数量,若此值过高或内存或磁盘存在一定瓶颈。
    2. Target Server Memory (KB);Total Server Memory (KB)理想上能使用内存量与内存管理器提交的内存量。若此两值存在差异则说明内存异常。
  3. General Statistics 常规统计

    1. User Connections;Logins/sec;Logouts/sec 用户并发情况
    2. Processes blocked当前阻塞数量
    3. Temp Tables For Destruction等待被清除系统线程破坏的临时表/表变量数。无用的临时表和表变量。
  4. SQL Statistics; Wait Statistics 请求与等待统计

    1. Batch Requests/sec;SQL Compilations/sec;SQL Re-Compilations/sec每秒的请求、编译和重编译的次数,这些对于优化供参考。
    2. Lock waits等待锁的进程数。
    3. Log write waits等待写入日志缓存的进程数
    4. Page IO latch waits与页 I/O 闩锁相关的统计信息。用于判断内存或磁盘的瓶颈情况
    5. Page latch waits与页闩锁(不包括 I/O 闩锁)相关的统计信息。用于判断内存或磁盘的瓶颈情况
  5. Databases 针对数据库级别

    1. Log Flush Wait Time;Log Flushes/sec日志刷新等待和频率,若数据异常则可能存在磁盘瓶颈
    2. Transactions/sec 事务数
  6. Locks 锁

    1. Lock Requests/sec;Lock Timeouts/sec锁请求频率;锁超时频率
    2. Number of Deadlocks/sec 死锁情况。
时间: 2024-07-31 13:34:24

SQL Server性能计数器架构的相关文章

SQL Server性能计数器收集汇总方案(Reporting Service)

通过收集计数器信息,并将计数器信息汇总为不同粒度存储,以Reporting Service报表服务器显示.以下是计数器收集汇总的基本架构. 笔者需要收集的SQL Server计数器包括:SQL Server计数器属性详解 一.SQL Server计数器基本架构图 1. 生产服务器通过ODBC开发数据库互联ODBC配置访问监控监控服务器的SQLPerfData,将数据写入该数据库.详情请见计数器部署 SQL Server性能计数器部署(批量) 2. 通过作业调用存储过程spb_Perf_Count

SQL SERVER 2008 架构

架构: 一个容器 包含表,视图,数据库对象等等. 相当于命名空间 如何创建一个架构: 1. 图形向导 2.命令 create schema 在sqlserver 2005中,可能大家在工作或学习的时候会经常发现这样一些问题,你使用一个账户在数据库中创建了一张表,却发现你自己创建的表却没有修改和查询的权限,这是一件很郁闷的事情,在sqlserver2000中却不存在这样的问题,那为什么在2005中会出现这样的事情,这样的设置可以带来哪些好处?其实导致这一问题的原因主要在于2005中多了一个新的概念

SQL Server Alwayson架构下 服务器 各虚拟IP漂移监控告警的功能实现 -2(虚拟IP视角)

1.需求描述 我们知道Windows Cluster 都是多节点的,当虚拟IP漂移的时候,一般都是从一个节点漂移到另外一个节点.如果可以及时捕捉到旧节点信息是什么.新节点信息是什么对我们提供高可用的数据库服务很重要,只有捕捉到这些信息后才可以进一步检查相应的Job.账号,甚至是调整相应的应用服务等. 2.基本原理 在上一节<SQL Server Alwayson架构下 服务器 各虚拟IP漂移监控告警的功能实现 -1(服务器视角)>,我们实现了针对某一个节点的监控即这个节点是否有虚拟IP新增或消

SQL Server AlwaysOn架构及原理

SQL Server2012所支持的AlwaysOn技术集中了故障转移群集.数据库镜像和日志传送三者的优点,但又不相同.故障转移群集的单位是SQL实例,数据库镜像和日志传送的单位是单个用户数据库,而AlwaysOn支持的单位是可用性组,每个组中可以包括一个或者是多个用户数据库.也就是说,一旦发生切换,则可用性组中的所有数据组会作为一个整体进行切换. AlwaysOn底层依然采用Windows 故障转移群集的机制进行监测和转移,因此也需要先建立Windows Cluster,只不过可用性组中的数据

第五篇 SQL Server安全架构和安全

本篇文章是SQL Server安全系列的第五篇,详细内容请参考原文. 架构本质上是一个数据库对象,其他对象的一个容器,在复杂的数据库中它能够很容易的管理各组对象.架构具有重要的安全功能.在这一篇你会学习如何给主体访问一组对象,通过给架构分配权限而不是单个表.代码模块和其他对象.你还会了解用户架构分离的好处,以及如何提高对象安全性,如何为用户.组使用默认架构来简化对象访问管理和安全性.Schemas with Roles and PermissionsThe relationship of sch

SQL Server 虚拟化(2)——理想的SQL Server虚拟机架构

本文属于SQL Server虚拟化系列 搭建SQL Server虚拟机,在各个组织之间都有自己的标准和最佳实践.从第一眼看去,光物理配置就有过百种,所有的这些细微差别都有可能为后续日常管理过程中故障侦测带来麻烦.如果创建一个合适的虚拟机模版,并用于后续新虚拟机的创建和部署,那么可以把很多部署问题最小化. 在本文中,会讨论"为什么"要针对当前SQL Server负载创建理想化的SQL Server虚拟机.下一章会演示对于目前主流的VMWare和Hyper-V虚拟环境的创建. VM配置:

sql server 性能计数器

常规计数器 收集操作系统服务器的服务器性能信息,包括Processor.磁盘.网络.内存 Processor 处理器 1.1 % Processor Time指处理器用来执行非闲置线程时间的百分比.通过此计数器可以确定服务器当前CPU使用百分比. 1.2 % Privileged Time是在特权模式下进程线程执行代码所花时间的百分比.当调用 Windows 系统服务时,此服务经常在特权模式运行,以便获取对系统专有数据的访问. PhysicalDisk物理磁盘(某个RAID) 2.1 Avg.

怎样获取Windows平台下SQL server性能计数器值

转载自工作伙伴Garrett, Helen "SQL Server Performance Counter captures" Capturing Windows Performance Counters for SQL Server SQL Server Performance Counters The following counters are the recommended list to capture baseline performance metrics for SQL

[转载]SQL Server内核架构剖析

原文链接:http://www.sqlserver.com.cn 我们做管理软件的,主要核心就在数据存储管理上.所以数据库设计是我们的重中之重.为了让我们的管理软件能够稳定.可扩展.性能优秀.可跟踪排错.可升级部署.可插件运行, 我们往往研发自己的管理软件开发平台.我们总是希望去学习别人的开发平台(如用友或金蝶或SAP),但我们却总是感叹管理软件业务处理细节繁多, 而数据库管理软件却简单的SELECT.INSERT.DELETE.UPDATE四个命令就搞定. 我们多希望有一天能做出一个架构,也可