《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一第3章 查 询 转 换-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一第3章 查 询 转 换

简介: 本节书摘来自华章出版社《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一 书中的第3章,作者:黄玮,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第3章 查 询 转 换

查询转换(Query Transformation),又称为逻辑优化(Logical Optimization),也称为软优化,即查询转换器在逻辑上对语句做一些语义等价转换,从而能使优化器生成效率更高的执行计划。
语句在被提交到Oracle后,解析器(Parser)会对SQL语句的语法、语义进行分析,并将查询中的视图展开、划分为小的查询块(Query Block)。它们是嵌套或者相互关联的,而查询形式则决定了它们之间是如何关联的。这些查询块被传送给了查询转换器后,查询转换器会在不影响逻辑结果的前提下,决定如果改变查询形式(从而改变查询块之间的关系),是否能生成更好的执行计划。
查询转换器依据特定的方式决定是否对查询块进行转换。按照其所依赖的方式,转换技术可以分为两类:启发式查询转换(Heuristic Query Transformation),又称为基于规则的查询转换(Rule Based Query Transformation);基于代价的查询转换(Cost Based Query Transformation,CBQT)。
启发式查询转换是基于一套规则对查询进行转换,一旦满足规则所定义的条件,则对语句进行相应的转换,部分启发式转换技术在RBO时代就已经被引入了。
基于代价的查询转换是否对语句进行转换则取决于语义等价语句之间的代价对比,即采用代价最小的一种。
提示:大多数基于代价的查询转换都可以从执行计划的概要数据中找到线索;而启发式查询转换则需要从优化器跟踪(10053)信息中查找线索,并且许多跟踪记录仅能从11g的跟踪信息中发现。
不过,并不是每一项转换技术都被严格划分在某一类下,某些技术,例如子查询反嵌套,既包含了启发式查询转换,又存在基于代价的查询转换。
Oracle主要采用了以上两种转换技术,我们分别介绍两种转换技术,对于同时采用了两种转换规则的情况,我们会再做说明。
在本章中,我们将会了解到以下内容:
Oracle的逻辑优化技术中,存在哪些启发式查询转换技术,以及它们的具体含义和示例;
Oracle的逻辑优化技术中,存在哪些基于代价的查询转换技术,以及它们的具体含义和示例。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
最新文章
相关文章
官网链接