sqlserver服务器硬件性能瓶颈分析
硬件性能瓶颈
内存
内存对SQL Server性能的影响胜过任何其他硬件。因此,对SQL Server系统的内存使用情况进行定期监视以确保内存的可用百分比高于20%是很有必要的。如果用户遭遇性能问题,同时可用内存百分比低于20%,那么此问题一定是内存分配不足导致的。这要求技术人员密切关注显示平均页面预期寿命的性能计数器,并确保平均页面预期寿命总是高于300秒(5分钟)。一旦放生少于此标准的情况,就说明要么是糟糕的索引设计导致了磁盘输入/输出(I/O)的增加,要么就是对内存的利用效率很低,或者是实际的内存不足。技术人员需要监视SQL Server系统上的分页率,并确保它们常规为1000页每秒。检查PerfMon object MSSQL Buffer Manager(性能监视对象MSSQL缓冲管理器)和Memory Performance Counters(内存性能计数器)。
同样,还要监视计数器,即PerfMon object SQL Server Memory Manager Counters中的Memory Grants Pending.此计数器显示的是每秒钟等待工作负载分配的进程总数。一般来讲,小型OLTP事务不需要大内存分配。对一个OLTP事务来说,任何大于零的内存分配都说明SQL Server系统存在内存不足。
解决内存瓶颈的途径之一是找出内存高耗进程,这可以确认诸如内存泄漏之类潜在的应用程序问题。你还可以通过检查查询优化性能以消耗更少的内存。另外一种方法就是给SQL Server增加更多的物理内存来扩展升级SQL Server环境。扩展升级通常是解决任何与内存相关的性能瓶颈的济世良方。
磁盘I/O使用
对比其他的硬件资源,存储输入/输出通常是SQL Server中最慢的系统资源。因此,监视存储系统以确定存储是否成为一个影响性能的瓶颈是十分重要的。如果是,那么下个步骤就是要调查是否能够优化存储系统的设计和配置以获得扩展性和高性能。检查Average Disk Sec/Read(秒均磁盘读取)和Average Disk Sec/Write (秒均磁盘写入)的PerfMon磁盘计数器。确保OLTP系统和更高决策支持系统的一个读或写的时间在理想情况下少于12毫秒。
与内存一样,解决磁盘I/O性能瓶颈最简单的方法就是扩展升级SQL Server环境,即用更快的磁盘替换现有磁盘,可以更好地应对I/O负载和分配I/O负载到多个轴上。同时还要定期整理磁盘数据。
CPU
CPU性能瓶颈的发生有诸多原因。它们包括非理想的查询计划,应用程序或是数据库的设计缺陷,糟糕的SQL Server配置或是硬件资源的不足。技术人员可以对Processor Queue Length(处理器队列长度)的PerfMon operation system CPU(PerfMon操作系统CPU)和处理器计数器进行检查以验证正在等待CPU周期的线程数在八个以内。如果这一数字大于12,那就意味着CPU产生了性能问题。
在确认了某个CPU瓶颈之后,便可以使用sys.dm_os_wait_stats动态管理视图(DMV)来确认对CPU来说排前十的性能最差的查询,如下所示。
SELECT TOP 10 (a.total_worker_time / a.execution_count) AS [Avg_CPU_Time]
,Convert(VARCHAR, Last_Execution_Time) AS [Last_Execution_Time]
,Total_Physical_Reads
,SUBSTRING(b.TEXT, a.statement_start_offset / 2, (
CASE
WHEN a.statement_end_offset = - 1
THEN len(convert(NVARCHAR(max), b.TEXT)) * 2
ELSE a.statement_end_offset
END - a.statement_start_offset
) / 2) AS [Query_Text]
,dbname = Upper(db_name(b.dbid))
,b.objectid AS 'Object_ID', B.*
FROM sys.dm_exec_query_stats a
CROSS APPLY sys.dm_exec_SQL_text(a.SQL_handle) AS b
ORDER BY [Avg_CPU_Time] DESC
接着,你可以对这些查询和底层索引进行调优以解决CPU瓶颈。同时,对你的SQL Server进行配置以使用所有可用的CPU机器。你还可以通过添加额外的CPU或用更快的CPU升级一个新的服务器来扩展你的SQL Server系统。
sqlserver服务器硬件性能瓶颈分析的更多相关文章
- SqlServer性能瓶颈分析
SqlServer性能瓶颈分析 一.内存瓶颈分析--SQLServer:Buffer Manager SELECT TOP 312 * FROM sys.dm_os_performance_coun ...
- 【转】怎样查出SQLServer的性能瓶颈
怎样查出SQLServer的性能瓶颈 --王成辉翻译整理,转贴请注明出自微软BI开拓者[url]www.windbi.com[/url]--原帖地址 如果你曾经做了很长时间的DBA,那么你会了解到SQ ...
- 怎样查出SQLServer的性能瓶颈
怎样查出SQLServer的性能瓶颈 --王成辉翻译整理,转贴请注明出自微软BI开拓者[url]www.windbi.com[/url]--原帖地址 如果你曾经做了很长时间的DBA,那么你会了解到SQ ...
- mysql性能瓶颈分析、性能指标、指标搜集方法与性能分析调优工具
本文主要讲解mysql的性能瓶颈分析.性能指标.性能指标信息的搜集工具与方法.分析调优工具的使用. 文章尚未完成. 性能瓶颈: 慢.写速度比读速度慢很多 主要的性能指标: 访问频度, 并发连接量, ...
- 通过Thrift访问HDFS分布式文件系统的性能瓶颈分析
通过Thrift访问HDFS分布式文件系统的性能瓶颈分析 引言 Hadoop提供的HDFS布式文件存储系统,提供了基于thrift的客户端访问支持,但是因为Thrift自身的访问特点,在高并发的访问情 ...
- Benchmark Web App 性能瓶颈分析与性能测试工具的使用方法总结
主要分为以下几个要素的指标: Disk IO . CPU . mem . Net . MySQL Web性能测试工具: 客户端 服务器端: 服务器性能测试工具: 服务器性能瓶颈分析工具: ab, si ...
- 通过 Java 线程堆栈进行性能瓶颈分析
改善性能意味着用更少的资源做更多的事情.为了利用并发来提高系统性能,我们需要更有效的利用现有的处理器资源,这意味着我们期望使 CPU 尽可能出于忙碌状态(当然,并不是让 CPU 周期出于应付无用计算, ...
- 通过Java 线程堆栈进行性能瓶颈分析
改善性能意味着用更少的资源做更多的事情.为了利用并发来提高系统性能,我们需要更有效的利用现有的处理器资源,这意味着我们期望使 CPU 尽可能出于忙碌状态(当然,并不是让 CPU 周期出于应付无用计算, ...
- linux服务器宕机分析/性能瓶颈分析
linux服务器宕机分析/性能瓶颈分析 服务器宕机原因很多,资源不足.应用.硬件.系统内核bug等,以下一个小例子 服务器宕机了,首先得知道服务器宕机的时间点,然后分析日志查找原因 1.last ...
随机推荐
- 本地Office Project计划表同步到SharePoint2013任务列表的权限问题
使用SharePoint做项目管理时,项目任务列表往往比较重要,通常使用任务列表体现项目计划,而这个任务列表经常会根据项目计划的变更而进行调整,但更多时候项目管理者会习惯在本地Project中维护这份 ...
- 轻量级封装DbUtils&Mybatis之二Dbutils
DbUtils入门 Apache出品的极为轻量级的Jdbc访问框架,核心类只有两个:QueryRunner和ResultSetHandler. 各类ResultSetHandler: ArrayHan ...
- Makefile编写 五 隐含规则
隐含规则———— 在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o]文件,Windows下是[.obj] ...
- net start mongodb发生系统错误2 系统找不到指定的文件
安装mongodb时, 将mongodb 作为系统服务启动 net start mongodb,报错发生系统错误2 系统找不到指定的文件 . 查找原因是因为,系统服务的可执行文件地址有误. 修改服务地 ...
- 全排列函数C++实现
例题:求由123456789构成的所有九位数字 1 用C++的next_permutation函数 #include <iostream> #include <stdio.h> ...
- 问题排查-JVM堆外内存问题排查
首先确认堆占用 jmap 查看heap内存使用情况 jmap -heap pid 1 可以查看到MetaspaceSize,CompressedClassSpaceSize,MaxMetaSize j ...
- 20181106_线程之异常_取消_变量_安全Lock
一. 线程的异常处理: try { TaskFactory taskFactory = new TaskFactory(); List<Task> taskList = new List& ...
- ALSA声卡笔记1---ALSA驱动框架
1.声卡驱动程序sound.c (1)入口函数里通过register_chrdev()函数注册file_operations 结构体 (2)file_operations 结构体,里面只有open函数 ...
- [Python] IMG to Char
Change image into character from PIL import Image import argparse #输入 #命令行输入参数处理 parser = argparse.A ...
- stm32通信概述
本文提到的内容有以下几个方面: 通信概述 串口通信 I2C通信 CAN通信 SPI通信 I2S通信 USB通信 其他通信 一.通信概述 按照数据传送方式分: 串行通信(一条数据线.适合远距离传输.控制 ...