SQLSERVER 性能优化之Perfmon指标

Perfmon是Windows系统性能监视程序。用于监视CPU使用率、内存使用率、硬盘读写速度、网络速度等。

Processor/%Privileged Time
阀值:如果数值持续大于75%就表示存在瓶颈。
含义:这个计数器表示一个线程在特权模式下所使用的时间比例。当你的程序调用操作系统的方法(比如文件操作,网络I/O或者分配内存),这些操作系统的方法是在特权模式下运行的。

Processor/ %UserTime             
与%Privileged Time计数器正好相反,指的是在用户状态模式下(即非特权模式)的操作所花的时间百分比。

Process(sqlservr.exe)/ %Processor Time
SQLServer进行的CPU使用情况

Processor/% Interrupt Time
阀值:取决于处理器
含义:这个计数器表示处理器接收处理硬件中断所使用的时间比例。这个值间接指出产生中断的硬件设备活动,比如网络变化。这个计数器显著增加的话表示硬件可能存在问题。

System/Processor Queue Length
阀值:平均值持续大于2那么表示CPU存在瓶颈
含义:如果就绪的任务超过处理能力线程就会被放进队列。处理器队列是就绪但是未能被处理器执行的线程的集合,这是因为另外一个线程正在执行状态。持续或者反复发生2个以上的队列则明确的表示存在处理器瓶颈。你也能通过减少并发取得更大的吞吐量。
你可以结合Processor/% Processor Time来决定增加CPU的话你的程序是否能够受益。即使在多处理器的电脑上,对于CPU时间也是单队列。因此,在多处理器电脑上,Processor Queue Length (PQL)的值除以用来处理负载的CPU个数。
如果CPU非常忙(90%以上的使用率),PQL的平均值也持续大于2/CPU, 这是应该存在CPU瓶颈而且能够从更多的CPU中受益。或者,你可以减少线程的数量以及增加应用程序层的队列。这会引起少量的Context Switching,但是少许的Context Switching对于减少CPU负载是有好处的。PQL大于2但是CPU使用率却不高的的常见原因是对CPU时间的请求随机到达而且线程却从处理器申请到不对称的CPU时间。这意味着处理器并不是瓶颈,而你的线程逻辑是需要改进的。

SQLServer:SQL Statistics/Auto-Param Attempts/sec
每秒的自动参数化尝试数。 其总数应为失败的、安全的和不安全的自动参数化尝试之和。 当 SQL Server 实例尝试通过将某些文字替换为参数来参数化 Transact-SQL 请求时,就会进行自动参数化,这样可以对多个相似的请求再次使用保存在缓存中的执行计划。 请注意,在更新版本的 SQL Server中,自动参数化也称为简单参数化。 此计数器不包括强制参数化。

SQLServer:SQLStatistics/Failed Auto-params/sec
每秒自动参数化尝试失败次数。 该值应很小。 请注意,在更高版本的 SQL Server中,自动参数化也称为简单参数化。

SQLServer:SQLStatistics/Batch Requests/sec
每秒收到的 Transact-SQL 命令批数。 这一统计信息受所有约束(如 I/O、用户数、高速缓存大小、请求的复杂程度等)影响。 批处理请求数值高意味着吞吐量很好。

SQLServer:SQL Statistics/SQLCompilations/sec
 每秒的 SQL 编译数。 表示编译代码路径被进入的次数。 包括 SQL Server中语句级重新编译导致的编译。 当 SQL Server 用户活动稳定后,该值将达到稳定状态。

SQLServer:SQL Statistics/SQLRe-Compilations/sec
每秒语句重新编译的次数。 计算触发语句重新编译的次数。 一般来说,这个数值最好较小。

 

时间: 2024-10-29 19:58:26

SQLSERVER 性能优化之Perfmon指标的相关文章

SQLServer性能优化之 nolock,大幅提升数据库查询性能

公司数据库随着时间的增长,数据越来越多,查询速度也越来越慢.进数据库看了一下,几十万调的数据,查询起来确实很费时间. 要提升SQL的查询效能,一般来说大家会以建立索引(index)为第一考虑.其实除了index的建立之外,当我们在下SQL Command时,在语法中加一段WITH (NOLOCK)可以改善在线大量查询的环境中数据集被LOCK的现象藉此改善查询的效能. 不过有一点千万要注意的就是,WITH (NOLOCK)的SQL SELECT有可能会造成Dirty Read,就是读到无效的数据.

02.SQLServer性能优化之---牛逼的OSQL----大数据导入

汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 上一篇:01.SQLServer性能优化之----强大的文件组----分盘存储 http://www.cnblogs.com/dunitian/p/5276431.html 在执行SQL脚本的时候要是出现了这些情况我咋办呢? 步入正轨 应用场景:服务器升级,比如原来是2003的系统,现在换成2008或者2012,那么数据库升级了不止一个档次,咋办?分离附加,备份还原都有点悬了,那么就导

03.SQLServer性能优化之---存储优化系列

汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概  述:http://www.cnblogs.com/dunitian/p/6041323.html#com 以下内容皆为个人摸索,没有人专门指导(公司不给力啊!DBA和大牛都木有...),所以难免出错,如有错误欢迎指正,小子勇于接受批评~(*^__^*) ~ 水平分库分表和垂直分库分表,大家都经常谈,我说下我的理解,看图: 垂直分表就不用说了,基本上会SQLServer的都会. 垂

SqlServer性能优化和工具Profiler(转)

合理的优化和熟练的运用Profiler会让你更好的掌握系统的sql语句和存储过程的效率 目录 第1章 如何打开SQL Server Profile. 3 第2章 SQL Server Profile. 3 2.1 了解SQL Server Profiler. 3 2.2 创建跟踪... 3 2.3 查看.分析跟踪... 6 第3章 SQL Server Profiler模板... 7 第4章 Msdn的相关介绍... 10 4.1 概述... 10 4.2 Profiler trace文件性能分

SqlServer性能优化(一)

一:数据存储的方式: 1.数据文件:.mdf或.ndf 2.日志文件:.ldf 二:事务日志的工作步骤: 1.数据修改由应用程序发出(在缓冲区进行缓存) 2.数据页位于缓存区缓冲中,或者读入缓冲区缓存然后修改 3.修改记录在磁盘上的事务日志中 4.检查点将提交的事物写入数据库中 三:手工性能收集项 系统要收集的关键方面 1.windows  BPA与 SQL Server BPA 2.性能计数器基准分析与Profiler 3.动态管理视图查询 系统要监视的关键方面 1.磁盘.内存.CPU.网卡

关于Net开发中一些SQLServer性能优化的建议

一. ExecuteNonQuery和ExecuteScalar 对数据的更新不需要返回结果集,建议使用ExecuteNonQuery.由于不返回结果集可省掉网络数据传输.它仅仅返回受影响的行数.如果只需更新数据用ExecuteNonQuery性能的开销比较小. ExecuteScalar它只返回结果集中第一行的第一列.使用 ExecuteScalar 方法从数据库中检索单个值(例如id号).与使用 ExecuteReader 方法, 返回的数据执行生成单个值所需的操作相比,此操作需要的代码较少

SqlServer性能优化 即席查询(十三)

执行计划,查询类别: 1.即席查询     2.预定义查询 select c.EnglishProductCategoryName,p.EnglishProductName,p.Color,p.Size from Product as p inner join ProductCategory as c on p.ProductSubcategoryKey= c.ProductCategoryKey where p.Size>'1' --查询执行计划是否被缓存 select c.usecounts

SqlServer性能优化 自定义动化性能收集(四)

配置数据收集器: 1.创建登录名并映射角色 2.配置管理数据仓库 3.创建收集组.收集项----MSDB数据存储   sp_syscollector_create... 4.自动配置相关job 具体步骤: 创建好之后的图: 配置数据收集: 刷新如下图所示: 创建的方法: use msdb go declare @collectionsetid int --有返回值 exec sp_syscollector_create_collection_set @name='性能收集集合', --收集的模式

SqlServer性能优化 手工性能收集动态管理视图(三)

动态管理视图: 具体的实例语句:  --关于语句执行的基本情况 select * from sys.dm_exec_query_stats  --动态管理函数  需要提供参数  select top 10 execution_count,total_worker_time,t.text,total_worker_time/execution_count      as avgcpu from  sys.dm_exec_query_stats as s  cross apply sys.dm_ex