《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一2.2 内部函数与操作

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

2.2 内部函数与操作

实际上,在Oracle内部,执行计划的每一个数据源(Row Source)操作都与一个内部函数(qer<*>)相对应,而操作对象、谓词条件都是这些函数的参数。这些函数之间可以相互调用,也正是这些函数的调用关系,映射成为执行计划的树状关系。换句话说,一个执行计划告诉Oracle的内部引擎如何调用这些函数,以及传给函数的参数值。
例如,在上述例子中,NESTED LOOPS获取数据的内部函数是qerjoFetch;TABLE ACCESS BY INDEX ROWID的内部函数是qertbFetchByRowID;INDEX UNIQUE SCAN的内部函数是qerixFetchUniqueIndex;TABLE ACCESS FULL的内部函数是qertbFetch。
从这个意义上来说,我们可以将一个执行计划视为一段伪代码或者一段解释型语言的代码,SQL执行引擎则负责解释和执行该段代码。
基本上,在Oracle内部,所有“qer”前缀的函数都属于数据源操作模块的函数,而根据它们操作对象和方式不同,又可以分为多个不同的子模块。大部分数据源函数模块见表2-1。

screenshot
screenshot
screenshot
screenshot

但是,要注意的是,执行计划操作所映射的函数并非是完成SQL语句执行过程的全部函数。SQL引擎在执行SQL语句时,除了需要知道调用哪些函数进行数据源操作以外,还需要知道如何进行其他相关操作,例如私有内存的使用,以及所有这些操作的上下文(Context)数据。而所有这些信息都存储在SQL区(SQL Area)当中。在每个游标的内存当中,它们都存放在Heap6中。

相关文章
|
1天前
|
Oracle 关系型数据库
Oracle - 表操作语句
Oracle - 表操作语句
10 0
|
3月前
|
SQL 存储 Oracle
Oracle SQL操作和查询
SQL是结构化查询语言(Structured Query Language),专门用于数据存取、数据更新及数据库管理等操作。
60 0
|
5月前
|
SQL 存储 Oracle
Oracle数据库中日期的操作、主键自增与分页查询
Oracle数据库中日期的操作、主键自增与分页查询
56 0
|
5月前
|
Oracle 关系型数据库 Java
hibernate操作Oracle出现违反唯一约束条件
出现这个问题的原因无非是主键冲突,我这里引起主键冲突的原因是实体类使用的ID策略为
|
6月前
|
SQL Oracle 前端开发
Oracle更改数据后后台无法操作 一直加载
今天用dbutils操作Oracle,在SQL developer里面测试执行完update语句后,在后台操作,前端页面一直加载,
|
7月前
|
Oracle 关系型数据库 数据库
|
7月前
|
SQL XML Oracle
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作(下)
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作(下)
|
7月前
|
SQL XML Oracle
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作(中)
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作(中)
|
7月前
|
SQL Oracle 关系型数据库
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作(上)
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作(上)
|
7月前
|
SQL Oracle 关系型数据库
Oracle查询优化-03操作多个表
Oracle查询优化-03操作多个表
61 0
热门文章
最新文章
推荐文章
更多
推荐镜像
更多