SqlServer性能瓶颈分析

一、内存瓶颈分析--SQLServer:Buffer Manager

SELECT TOP 312 * FROM  sys.dm_os_performance_counters
where object_name =‘SQLServer:Buffer Manager‘ order by counter_name

1.Buffer cache hit ratio  平均值>=90%

缓冲区是创建数据页面的缓冲页面池,这一般是SQL server内存池中最大的部分。这个计数器应该尽可能高。

低值表示只有少数的请求是在缓冲区,其他请求是在磁盘获取服务

这种情况发生可能是SQL server还在准备状态下,或缓冲区的增长需求超过最大可用内存,因此如果此值比较低,应该考虑为系统增加内存。

2.Checkpoint pages/sec    平均值<30

美好一个检查点操作移到磁盘的页面数量,这些值应该相当低,高值意味着缓冲中更多的页面被标记为脏页面。

脏页面是在缓冲区中被修改的页面。一旦被修改,就标记为脏并在下一个检查点被写回磁盘。

如果这个计数器较高说明系统发生大量的写入操作,可能是I/O问题的征兆。

3.Lazy writes/sec     平均值<20

记录了缓冲区管理器的Lazy write进程每秒写入的缓冲区数量。这个进程会把时间较长的脏页面从缓冲区中删除,将内存释放

数值过高说明I/O有问题或是内存问题。

4.Page life expectancy     平均值>300

页面平均寿命,表示一个不被引用的页面在缓冲池中停留的时间。数值低意味着页面从缓冲区中被移走

降低了缓冲的效率并指出内存压力的可能。

SELECT TOP 312 * FROM  sys.dm_os_performance_counters
where object_name =‘SQLServer:Memory Manager‘ order by counter_name

1.Memory Grants Pending      平均值=0

值高说明内存短缺,需要将进度挂起等待内存空闲

2. Target Server Memory(KB)     接近物理内存大小

表示SQLServer希望消耗的动态内存总数。

3.Total Server Memory (KB  )    接近于Target Server Memory
当前分配给SQLerver的总内存。 如果低于Target Server Memory

那么可能是SQLserver内存需求很低,服务器最大内存设置的太低

二、磁盘瓶颈分析  Physical Disk

%disk time 磁盘时间百分比 平均值<85%
CurrentDiskQueueLength 当前磁盘队列长度  平均值<2
disk Transfers/sec 每秒磁盘传输数量  平均值<100
Disk Bytes/sec 每秒传输字节数 平均值<每秒10MB(该值需通过磁盘性能测试评估,不同磁盘指标不同)
avg.disk sec/read(write) 每次磁盘读写所需平均时间   平均值<10毫秒

三、cpu  processor

%process Time 处理器时间百分比 平均值<80%

%privileged time 特权时间百分比 平均值<10%

windows server 包括用户模式和特权模式两种 %privileged time为20%-25%表明系统正在进行大量的IO操作,一个专用的SQLserver系统%privileged time不能超过10%

sqlserver:SQL Statistics Batch Requests/sec 每秒接收到的sql命令批数  根据机器配置 一般1000为繁忙,超过1000应注意

SQL Compilations/sec sql编译次数  <100

SQL Reompilations/sec sql重编译次数

四 网络

Network interface  bytes Total/sec 每秒总传输字节数  平均值<NIC容量的50%

NetworkSegment  %net utilization 网络利用率 平均值<80%

时间: 2024-10-10 16:33:32

SqlServer性能瓶颈分析的相关文章

mysql性能瓶颈分析、性能指标、指标搜集方法与性能分析调优工具

本文主要讲解mysql的性能瓶颈分析.性能指标.性能指标信息的搜集工具与方法.分析调优工具的使用. 文章尚未完成. 性能瓶颈: 慢.写速度比读速度慢很多  主要的性能指标: 访问频度, 并发连接量, 缓存命中率, index使用, slow log开启与分析, query Log,查询log Threads_cached:连接线程缓存是否开启  -> ONthread_cache_size :线程缓存数的大小query_cache_size: 查询缓存大小join_buffer_size :jo

通过 Java 线程堆栈进行性能瓶颈分析

改善性能意味着用更少的资源做更多的事情.为了利用并发来提高系统性能,我们需要更有效的利用现有的处理器资源,这意味着我们期望使 CPU 尽可能出于忙碌状态(当然,并不是让 CPU 周期出于应付无用计算,而是让 CPU 做有用的事情而忙).如果程序受限于当前的 CPU 计算能力,那么我们通过增加更多的处理器或者通过集群就能提高总的性能.总的来说,性能提高,需要且仅需要解决当前的受限资源,当前受限资源可能是: CPU: 如果当前 CPU 已经能够接近 100% 的利用率,并且代码业务逻辑无法再简化,那

性能瓶颈分析思路

性能瓶颈分析思路 性能分析是一个大课题,不同的架构.不同的应用场景.不同的程序语言分析的方法各有差异,抽象一下大致分为二类: 自底向上:通过监控硬件及操作系统性能指标(CPU.内存.磁盘.网络等硬件资源的性能指标)来分析性能问题(配置.程序等的问题).因为用户请求最终是由计算机硬件设备来完成的,做事的是 CPU. 自顶向下:通过生成负载来观察被测试的系统性能,比如响应时间.吞吐量:然后从请求起点由外及里一层一层的分析,从而找到性能问题所在. 不管是自底向上还是自顶向下,关键点就是生成负载.监控性

性能瓶颈分析方法(引用)

同一场景1.小用户量的情况下测试2.大用户量情况下的测试 分析的方法:整个系统架构分析,系统响应时间消耗,利用图表分析查看事务响应时间,通过事务摘要图分析事务响应时间,那个消耗最大(通过小用户量和大用户量的响应时间分析,查看那个事务响应时间最高),确定哪部分功能是性能的瓶颈,分析window resource图表,查看cpu 使用下列计数器标识cpu瓶颈Processor\ Interrupts/secProcessor\ % Processor TimeProcess(process)\ %

mysql的性能瓶颈分析、性能指标、性能指标信息的搜集工具与方法、分析调优工具的使用

性能瓶颈: 慢.写速度比读速度慢很多  主要的性能指标: 访问频度, 并发连接量, 缓存命中率, index使用, slow log开启与分析, query Log,查询log Threads_cached:连接线程缓存是否开启  -> ON    thread_cache_size :线程缓存数的大小    query_cache_size: 查询缓存大小    join_buffer_size :join buffer大小    tmp_table_size : tmp table 的大小

SQLServer &#183; BUG分析 &#183; Agent 链接泄露分析(转载)

背景 SQLServer Agent作为Windows服务提供给用户定期执行管理任务,这些任务被称为Job:考虑应用镜像的场景如何解决Job同步问题,AWS RDS的做法是不予理会,由用户维护Job,假如发生切换用户需要在新的Principal端创建Job:另一种做法是镜像端保持同步Job,切换后尽量让用户无感知不需要多余维护动作,但这种做法在某些情况会遇到非常严重的问题--内存耗尽. 问题排查分析 第一次分析 问题发生时实例的ERRORLOG出现: Error: 701, Severity:

Linux下的CPU性能瓶颈分析案例

问题描述: 在对notify执行性能测试时发现cpu负载突然飙高,cpu利用率高达95%.这时候就要排查是哪些线程消耗了cpu,并从代码层找到占用cpu的“罪魁祸首”. 步骤: 1. 先用ps+grep找到被测试的进程pid. 比如:ps –ef|grep notify,得到pid为29128. 2. 执行top -H -p,可显示出该进程下的所有线程.找到占用cpu最多的子线程pid,并将其转换为16进制. 比如:top -H -p 29128,看到notify的所有子线程.其中,%CPU 比

性能瓶颈分析(CPU,IO,内存)

1.系统CPU利用率高是什么原因? 答:cpu分为用户级的CPU和系统级的CPU,系统中断与切换多,中断和切换频繁很耗用CPU.运算量大是用户级的.CPU太差,主频太低,都是形容 CPU差. 苹果系统一直让单线程,因为这样就减少了N多插队的请求导致的中断减速 2.用户CPU利用率高是什么原因? 答:用户态是运行应用程序所占cpu时间百分比,系统态是应用程序调度所占cpu时间百分比,造成系统态高的原因 程序中断切换频繁,共享资源竞争,大量io交互,用户态高原因 程序运算量大. 3.下面IO高的原因

常用sqlserver性能分析

查看系统日志 select * from sys.traces 查看sql profile转储文件 先要用sql profile监控数据库,导出成trc 拷贝至数据库服务器上,eg.d:\sqldata\trace\201611290881.trc sql查询中如下语句查看 --SELECT cpu,TextData,Reads,Writes SELECT *FROM ::fn_trace_gettable('d:\sqldata\trace\201611290881.trc',default)