博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle SQL引擎的体系结构
阅读量:4040 次
发布时间:2019-05-24

本文共 587 字,大约阅读时间需要 1 分钟。

查询优化器是SQL引擎的构成组件之一。它的用途是及时提供高效的查询计划。查询优化器可以分解为逻辑优化器和物理优化器。

Oracle SQL引擎的体系结构如图所示:

以上是SQL引擎的关键组件。

  • 解析器:它的用途是向查询优化器传递SQL语句解析后的形式。
  • 逻辑优化器:在逻辑优化阶段,查询优化器通过应用不同的查询转换技术产生新的语义相等的SQL语句。逻辑优化器的目的是选择出查询转换的最佳组合。在这种情况下,搜索空间增加了,执行计划可以被探索而不会被认为没有经过这样的查询转换。
  • 物理优化器:在物理优化阶段,执行了几项操作。一开始,针对逻辑优化生成的每个SQL语句生成了几个执行计划。然后每个执行计划都发送给成本估算器让其计算出一个成本。最后,拥有最低成本的那个执行计划就被选中了。简单地说,物理优化器探索搜索空间来找到最有效率的执行计划。
  • 成本估算器:计算由物理优化器提交的执行计划的成本。
  • 行源生成器:查询优化器生成的执行计划不能直接由执行引擎执行。它必须转化成行源操作树以存储在库缓存中。
  • 执行引擎:这个组件执行由行源生成器产生的行源操作。如果基数反馈的监控是激活的,执行引擎(执行完毕后)会校验实际值和估算值的差异是否明显。如果找到了明显差异,关于正确值的信息就会存储到共享SQL区中,并且在下一次执行中,再优化是强制进行的。

 

看看下面这个图:

 

注意黄颜色框内的部分。

 

你可能感兴趣的文章
为什么读了很多书,却学不到什么东西?
查看>>
长文干货:如何轻松应对工作中最棘手的13种场景?
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
No.147 - LeetCode1108
查看>>
No.174 - LeetCode1305 - 合并两个搜索树
查看>>
No.175 - LeetCode1306
查看>>
No.176 - LeetCode1309
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
mysql:sql create database新建utf8mb4 数据库
查看>>
mysql:sql alter database修改数据库字符集
查看>>
mysql:sql drop table (删除表)
查看>>
mysql:sql truncate (清除表数据)
查看>>
scrapy:xpath string(.)非常注意问题
查看>>
yuv to rgb 转换失败呀。天呀。谁来帮帮我呀。
查看>>
yuv420 format
查看>>
YUV420只绘制Y通道
查看>>
yuv420 还原为RGB图像
查看>>
LED恒流驱动芯片
查看>>
驱动TFT要SDRAM做为显示缓存
查看>>
使用file查看可执行文件的平台性,x86 or arm ?
查看>>