SQL Server调优的五个步骤(下)


        www.InnovateDigital.com 整理

      步骤3 减少竞争

      现在,已经优化应用的I/O访问,下一步要完成的性能优化就是确保高度的并发不会导致对象竞争情况的增加。即使数据访问被优化了,使用锁和闩锁的SQL Server引擎,会同步和保护数据访问,在高负载下也会出现阻塞问题。智能的事务控制逻辑,可保证事务不会执行过长时间,或者只在适当得数据上加锁,因而其是达到高并发的关键。使用适当的事务隔离层可保证减少不必要的读操作阻塞,评估锁提示的需要可保证锁的不必要的保持,这些都可以极大提高应用的性能。为了减少或消除闩锁问题,保证应用不要将DDL和DML的操作混在一起。一旦解决这些问题,你就应该分析你的应用时如何访问数据的,以便确定是否可以通过数据分区的方式提高应用性能。
 

      ■ 阻塞锁-对象竞争-数据库锁

      确定是否存在明显的锁竞争,如果存在,看看经常出现锁竞争的数据库表,帮助识别故障点和缺失的索引,应用倾向于访问数据库中的某些特定的表多一些。当隔离层设置不正确时,事务会执行很长时间,由于涉及到的索引导致不能访问数据,处理发生冲突或发生阻塞等。许多应用管理员没有意识到数据库遭受阻塞的程度;我们需要分析和发现由频繁的短期锁大量累积而导致的明显竞争。

      ■ 阻塞锁-锁类型-数据库锁

      确定是否存在明显的锁竞争,如果存在,按照数据库分析锁的类型。某些应用以不同的方式访问不同的特定数据库。其原因可能是不同的开发人员开发的代码不同,或需求不断变化等等。按照数据库显示不同的SQL Server锁类型的分析结果,显示锁的行为与整体活动时间的比较分析的重要程度,这些将有助于应用程序开发人员正确地修改他们的应用代码。

      ■ 内存缓冲区闩锁-数据库闩锁

      确定是否存在明显的内存缓冲区闩锁竞争,如果存在,很多的内存缓冲区闩锁等待是I/O瓶颈和热页的迹象。因为内存缓冲区闩锁与I/O竞争没有直接关系,因而这对SQL Server的可用内存数量是很关键的。

      ■ 内部高速缓存闩锁竞争- 数据库闩锁

      确定是否存在明显的内部高速缓存闩锁竞争,如果存在,识别出哪里存在大部分竞争。内部高速缓存闩锁可用在多种不同的情况;可能最常见的例子是内部高速缓存的竞争(不是缓冲池页),尤其当使用堆,text或两者同时使用的时候。如果解决LOG和PAGELATCH_UP的竞争后没有作用,通常将数据分区可以很好缓解内部高速缓存闩锁的竞争。

 


      步骤4 解决资源瓶颈

      到目前为止,你已经确保你的查询正确地使用了底层的系统资源,并且尽可能有效地访问数据。现在你应该确定是否有资源瓶颈使你的应用慢下来。在应用上你可以做许多调优工作,在某些情况下外部因素仍是性能优化的最后障碍。这部分调优方法描述了特定资源的瓶颈。例如,SQL Server有足够的内存来支持良好的性能吗?有窃取SQL Server内存的外部应用程序吗?你的硬盘性能能足够支持你的工作量吗?你的应用能有效率地记录日志吗,记录日志的时间是否需要提高?最后,并行可以帮助你的查询执行更快,还是SQL Server花费更多的时间协调并发线程,从而使得并发带来更多的阻碍?应该考虑到应用性能的这些方面,可以保证充分利用底层系统资源,并且可以帮助确定哪些硬件需要扩容。
 

      ■ 内存压力-系统内存

      确定是否存在明显的内存压力,如果存在,请分析:

      ● 外部的内存压力可以影响SQL Server的性能。许多DBA和DBA的经理们不明白病毒检测软件的配置不当和在一个exchange server上安装SQL Server所带来的影响。

      ● SQL Server没有足够的内存达到理想的功能。如果SQL Server不能分配给缓存足够的内存,页的平均寿命将减少,系统范围内存分页交换就会增加。

      ■ 日志等待

      确定是否有明显的日志等待,如果有,分析有多少因素减慢SQL Server记录日志。

 


      步骤5 基线偏离分析

      毫无疑问,对应用性能的最好的比较衡量是它自己过去的性能。需要分析应用性能是在哪里与过去的所观测的行为发生了偏离。这意味着你能快速,容易地看出你的应用的伸缩状况,以及确定应用的构建和系统变化等因素对企业性能的影响。我们可以分析多种主要资源的使用的偏离情况。我们需要分析出哪种主要的资源分类会受到影响,根据分析所提供的逻辑和分析度量值与其它支持信息,可以更快地理解如何获得应用的最佳性能。
 

      ■ CPU使用率偏离,CPU等待时间偏离,I/O等待时间偏离,闩锁等待时间偏离, 锁等待时间偏离,工作量偏离

      ● 确定这些指标是否与过去典型的使用情况发生了重要变化。

      ● 这些变化应该再核实确认,确保它们不会成为有问题的变化。