OLTP性能调整与优化--结语

  根据软件生命周期的瀑布模型,应用程序的性能在其设计阶段就已经有了质的定性。如果在应用程序开发完成之后才想到优化,一般就只能治标不治本,在遇到严重的性能问题时,甚至需要将整个软件推倒重来。

  当一个软件系统已经上线运营,在数据库引擎方面需要优化时,可以按以下建议执行。


一、需求分析与设计

  在进行性能调优之前,务必有详细的需求分析。需求分析应当包括:

1.业务需求与流程重整

  充分了解业务的流程,并从流程优化开始。需求分析和设计人员不是照搬现有的流程,而是利用最新的计算机技术改造现有的业务流程,实现规范化、效率化的目标。

  业务需求应充分展望和预测未来的计算机技术和软件系统可能承受的运行压力,至少要能应付未来一段时期的数据增长和用户访问的压力。如果性能优化只是满足一时的需求,不久又要重新优化,那么这种优化的必要性就值得商榷了。


2.投资额度与优化目标

  性能调整与优化项目所创造的价值,很难以现有的商业价值评估体系进行测算,因此很难计算投资回报率(ROI)。

  一般来说,性能优化是无止尽的,需要“见好就收”,在投资额度内达到预期的性能目标就足够了。



二、实施方法

1.分析瓶颈

  掌握SQL Server的工作原理,从底层去了解产生瓶颈的原因,然后做出对策。一般的瓶颈出现在:

(1)服务器硬件

(2)操作系统

(3)SQLServer选项

(4)内存、CPU、磁盘I/O


2.分段实施

(1)第一阶段:建立性能基线

  为当前的SQLServer系统建立性能标准,并且尽可能地量化,以此作为评估效果的依据。例如,通过性能计数器获得当前的内存、CPU峰值和均值。又如,运行一个复杂查询,记录它的耗时。


(2)第二阶段:优化系统资源

  例如,为32位系统启用AWE。这是最简单的工作,也是最有意义的工作,它能为性能调优项目带来显而易见的效果。如果是服务器硬件瓶颈(内存不足、磁盘性能低,等等),或者是操作系统瓶颈(32位操作系统),将SQLServer迁移到新的服务器,或者重新安装操作系统,在某些情况下都可以明显提升性能。


(3)第三阶段:依次解决瓶颈

  使用计数器、DMV、跟踪等技术手段,确认瓶颈,然后对症下药。


(4)第四阶段:优化T-SQL语句

  程序开发人员如果不具备查询优化知识,或者对SQLServer瓶颈了解不多,往往导致最终交付的质量可能参差不齐。甚至在国内某些企业,招募几个“码农”就包揽需求分析、模型设计、编写代码、测试上线的“一条龙”服务,其代码的质量可想而知。