自来云

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

SQL Server 2008性能故障排查(一)——概论

概要:

有时候对一个工作负载进行劣质的数据库设计或者不正确的系统配置会引起SQLServer运行缓慢。DBA需要主动地防止或者最小化问题,并且当问题发生后,诊断问题的起因并作出正确的响应。本文提供逐步指引,使用公开可用的工具如SQLServer Profiler、性能监视器、DMVSQLServer扩充事件数据收集器来诊断和排查常见性能问题。

 

 

版权:本部分略去,请尊重他人劳动成果即可

 

简介:

SQLServer偶尔运行缓慢是不常见的现象。一般原因可以归结为:对一个工作负载进行劣质的数据库设计或者不正确的系统配置。作为一个DBA,需要主动避免或者最小化问题。当问题发生时,需要去诊断起因和作出正确的对策。本白皮书提供了各种工具如SQLServer Profiler、性能监视器、DMV、SQLServer扩充事件和数据收集器来诊断和排查常见性能问题。本白皮书把问题范围限制在一些客户经常反映的地方,因为分析所有可能的问题是不现实的。

 

目标:

本文的主要目的是提供常规方法,主要是一些公开的、可用的工具用于诊断和故障排查。SQLServer 2008在支持性上有了重大的提升。添加了一些新动态管理视图(DMV):如sys.dm_os_memory_brokers,sys.dm_os_memory_nodes,sys.dm_exec_procedure_stats。已有(2005出现)的DMV比如:sys.dm_os_sys_info,sys.dm_exec_requests和sys.dm_exec_requests也添加了很多新的信息。你可以DMV和使用现有的工具如SQL Server Profiler、性能监视器来收集性能相关数据用于分析。
第二个目的是介绍新的故障排查工具和2008特性,包括扩充事件(Extended Events)和数据收集器(data collector)

 

方法论:

SQLServer运行缓慢的原因可能有很多种,本文中根据下面3个主要症状来开始问题诊断:

  •  资源瓶颈(Resource Bottlenecks):CPU、内存和I/O瓶颈都将在本文中提及。我们不考虑网络问题。在每个资源瓶颈中,我们会描述如何标识出问题然后迭代地检查可能的原因。比如,一个内存瓶颈会引起过多的页面切换从而影响性能。
  • TempDB瓶颈:因为在每个SQLServer实例中,只有一个tempdb可被个个数据库使用,所以它可能成为性能问题和硬盘空间瓶颈。一个应用可能因为过多的DDL或者DML操作,并且耗用过多资源,会使得tempdb超负荷。这能引起非相关的、运行在同一服务器上的应用程序变得缓慢甚至运行失败。
  • 一个运行缓慢的用户查询:一个已存在的查询可能会影响性能,或者一个新的查询会耗费比想象中更多的资源。一般由以下原因引起:

  1、一个现有查询的统计信息的改变会使得优化器选择一个性能低下的执行计划。
  2、丢失索引将导致强制表扫描和减慢查询速度。
  3、应用程序也会因为阻塞从而影响性能,即使资源利用情况很正常。
  4、一些不好的应用程序、不合理的架构设计或者使用了不合适的事务隔离级别,都会导致过多的阻塞。
上面的这些原因不应该分开来分析,低效的执行计划会加重系统资源的使用从而引起工作负载的性能总体下降。所以,如果一个大表丢失了一个有效的索引,或者查询优化器不选择使用这个索引,那么查询将非常慢。这些情况也同时会对I/O子系统的读操作带来很大压力,因为不得不去读取一些本来没必要或者本来已经缓存在内存中的页。类似于一个经常运行的程序过度的编译将为CPU带来压力。

  •  在SQL Server 2008中新的性能工具:SQLServer2008提供了新的工具和特性去协助你监控和故障排查。我们主要讨论的是:扩充事件和数据收集器

资源瓶颈(Resource Bottlenecks):

在接下来的部分,将讨论CPU、内存和I/O子系统资源,并且讨论在什么情况下它们会成为瓶颈(网络部分不在本文讨论范围内)。对于每个资源瓶颈,我们将讨论如何识别问他你,然后迭代地检查可能的原因。比如内存瓶颈将导致切换页面过多,从而影响性能。
在你能判断性能瓶颈之前,你必须知道在正常情况下资源是如何被利用的。你能使用本文描述的方法去收集性能基线。即在没有性能问题之前的性能数据。
你可能发现资源使用正常,但是SQLServer在目前的配置下不能支持相应的负载。为了解决这个问题,你可能不得不增加更多更强大的资源,如内存、加大你目前I/O或者网络的带宽。但是,在你执行之前,你有必要先了解资源瓶颈的常规起因。一些解决方案,如重新配置,而不一定非要增加资源。

 

解决资源瓶颈的工具:

 

下列工具中的一个或多个能在解决部分性能问题时使用到:
 性能监视器(Performance Monitor):在部分Windows 操作系统中提供,详细的了解请查阅Windows文档。n
 SQLServer Profiler:在SQLServer的性能工具组中可以找到,可以查看联机丛书了解。n
 DBCC命令:可以查看附录A和联机丛书了解。n
 DMVs:详细可查看联机丛书。n
 扩充事件(Extended Events):可以查看稍后提到的Extended Events部分和联机丛书。n
 数据收集器和管理数据仓库(Data collector and the management data warehouse(MDW)):可以查看稍后提及的Data collector and MDW部分及联机丛书。n

下一节:CPU瓶颈

posted on 2018-05-30 10:19  自来云  阅读(323)  评论(0编辑  收藏  举报