首页 理论教育数据库性能管理与调优:提升应用程序性能

数据库性能管理与调优:提升应用程序性能

【摘要】:用于客户业务的应用程序,会根据开发者的能力而生成千变万化的逻辑和SQL语句,其质量和完成度对整个系统的性能具有极大的影响。应在分析执行计划后选择性地使用HINT,最好不超过全部SQL语句的20%。因为如果过多地使用HINT,发生索引重置等变更事项时会加重应用程序的修改负担。如果未生成适当的索引用于优化器制定最佳执行计划,那么无论怎样调优应用程序的逻辑也无法达到满意的性能。

用于客户业务的应用程序,会根据开发者的能力而生成千变万化的逻辑和SQL语句,其质量和完成度对整个系统的性能具有极大的影响。开发者的能力包括对关系型数据库系统的理解度及功能的利用率,优化器的理解度,SQL的构思能力等。

低效的逻辑或SQL语句编写将会引起大量不必要的磁盘和内存 I/O,消耗大量系统资源(CPU、内存、网络等),是对性能产生不良影响的关键因素,因此要由知识丰富和有经验的负责人定期验证应用程序的开发质量。

此外,最好在开发时、系统开放时、运行中性能下降时等必要时期向知识丰富和有经验的专家咨询(诊断和调优)。

1)优化器(Optimizer)模式选择

所谓优化器,指的是一种为有效处理所构建的SQL语句而制定执行计划的数据库内部逻辑功能。此类优化器按最终目标分为RULE-BASED模式(RULE)和COST-BASED模式(FIRST_ROWS, ALL_ROWS),默认为 CHOOSE模式。

此处RULE表示根据SQL语句的Where子句中使用的列和运算形式,根据所用索引的绝对优先权制定执行计划,COST则根据以相应对象的列构成、数据的选择度等统计值制定以成本为中心的执行计划。CHOOSE模式是将所有执行计划的全部决策权交给优化器处理的基本操作形式,根据系统情况选择RULE-BASED模式或COST-BASED模式。

通过ANALYZE操作按照数据累积类型分析等标准定期变更统计数据。

影响优化器执行计划模式的设置水平和因素见表 1-1。

表1-1 设置水平和因素

开发之前决定此类优化器模式的选择策略是非常重要的问题,设计者应综合考虑各种条件并慎重判断,决定后要保持一致性,模式选择可参考表1-2。

表1-2 优化器模式选择(www.chuimin.cn)

此外,无论如何设置优化器模式,从决定SQL语句执行计划的趋势方面来看,数据库有些部分不会按我们的意图制定,因此要适当地采用系统所提供的各种HINT功能。应在分析执行计划后选择性地使用HINT,最好不超过全部SQL语句的20%。因为如果过多地使用HINT,发生索引重置等变更事项时会加重应用程序的修改负担。

2)索引(Index)策略

根据从开发前期阶段开始对数据访问方式的全面分析,索引作为需策略性管理的关键要素之一,会对性能产生巨大的影响。但遗憾的是,作为大部分开发项目核心人员的设计者、管理者、DB管理员等人员的水平还不足以有策略性地有效地管理索引,只能被动应对。甚至有些人存有开展业务后等到数据累积导致性能下降时再生成所需索引的安逸想法。这是亡羊补牢式的安逸思考方式,而且一旦失去用户的信任将很难再恢复。

此外,已生成大量索引的事实本身并不重要,不必要的索引只是导致性能下降和存储空间浪费的因素。因此,系统地分析整个应用程序的数据访问类型后,务必进行管理,以便生成最少的所需索引。

如果未生成适当的索引用于优化器制定最佳执行计划,那么无论怎样调优应用程序的逻辑也无法达到满意的性能。因此,重要索引的选择应按步骤系统地进行,其内容整理如下:

(1)收集、分析访问表的所有访问类型(事件个数提取);

(2)对象列的选择和数据选择度调查;

(3)优先解决关键访问路径(反复执行的主要类型);

(4)决定组合索引列的排序顺序;

(5)索引创建和应用程序的应用确认。