【IT168 资讯】2012年11月9日-10日,第二届“Oracle技术嘉年华”将在北京国宾酒店隆重举行,届时国内外数据库界大师将齐聚北京,为大家奉上两天的技术“大餐”!本届大会是由ACOUG、ITPUB、IT168和云和恩墨共同主办的,会议主题为“数据库技术企业应用非常好的实践”。
在下午分会场的演讲中,来自中航信工程师、Oracle ACE,同时也是ACOUG成员的崔华老师,为我们带来了主题为《SQL优化的方法论》的精彩演讲。有意思的是,据崔华老师介绍,本次演讲的内容也是他的新书(基于Oracle的SQL优化)的第八章的主要内容,本书的最大目的就是让你知道在Oracle里如何写SQL。
通过索引优化并不是全部
在下午的第一场演讲中,另一位Oracle ACE熊军介绍了关于Oracle数据库优化的相关内容,其中提到了索引对于性能优化的重要性,并着重为大家讲解了关于B-Tree索引的优化方法。
而崔华老师则说,“在很多人眼里,SQL优化就是走索引,就是用走索引来取代全表扫描。实际上这种认识是非常肤浅的。尽管大部分SQL优化的问题都可以通过增加或者减少索引的方式来解决,但这绝不是全部”!
Oracle SQL优化方法论
据崔华老师介绍,Oracle数据库里SQL优化的终极目标就是要缩短目标SQL语句执行时间。要达到上述目的,我们通常只有如下三种方法可以选择:
降低目标SQL语句的资源消耗;
并行目标SQL语句;
平衡系统的资源消耗。
针对以上三种方法,崔华老师分别作出了详细的阐述。崔华老师认为,“方法1:降低目标SQL语句的资源消耗”以缩短执行时间,这是最常用的SQL优化方法。
${PageNumber}这种方法的核心是要么通过在不更改业务逻辑的情况下改写SQL来降低目标SQL语句的资源消耗,要么不改SQL但通过调整执行计划或相关表的数据来降低目标SQL语句的资源消耗。
方法1所涉及到的这两种优化手段在Oracle数据库中能否奏效以及效果的好坏与否很大程度上取决于对CBO和执行计划的理解程度,对CBO和执行计划理解的越深,这两种优化手段的应用就会越纯熟,效果就会越好。
方法1也正是崔华老师新书中所要提出的Oracle数据库里SQL优化方法论的第一点:Oracle里SQL优化的本质是基于对CBO和执行计划的深刻理解。
“方法2:并行执行目标SQL语句”,这实际上是以额外的资源消耗来换取执行时间的缩短,很多情况下使用并行是针对某些SQL的唯一优化手段。
“方法3:平衡系统的资源消耗” 可以避免不必要的资源争用所导致的目标SQL语句执行时间的增长。
其实从以上内容我们不难总结出,崔华老师所讲的针对Oracle数据库SQL优化的主要在于,对CBO和执行计划的深刻理解,以及做SQL优化不能脱离实际的业务。
