Oracle执行计划——Oracle 如何启用执行计划

本文介绍了Oracle SQL*Plus工具中的AUTOTRACE功能,包括如何启用AUTOTRACE,设置AUTOTRACE的不同命令选项,以及如何解读AUTOTRACE生成的执行计划和统计信息。

AUTOTRACE是一项SQL*Plus功能,自动跟踪为SQL语句生成一个执行计划并且提供与该语句的处理有关的统计。SQL*Plus AUTOTRACE可以用来替代SQL Trace使用,AUTOTRACE的好处是您不必设置跟踪文件的格式,并且它将自动为SQL语句显示执行计划。然而,AUTOTRACE分析和执行语 句;而EXPLAIN PLAN仅分析语句。使用AUTOTRACE不会产生跟踪文件。

1 启用Autotrace

1.1 以sys用户,运行utlxplan.sql

sqlplus / as sysdba

SQL> @$ORACLE_HOME/rdbms/admin/utlxplan.sql

1.2 通过执行plustrce.sql脚本创建plustrace角色

SQL> @$ORACLE_HOME/sqlplus/admin/plustrce.sql

1.3 授权

将 plustrace 角色授予当前用户(无 DBA 角色的用户),或者grant plustrace to public;

2 设置Autotrace的命令

序号

命令

解释

1

SET AUTOTRACE OFF

此为默认值,即关闭Autotrace

2

SET AUTOTRACE ON

产生结果集和解释计划并列出统计

3

SET AUTOTRACE ON EXPLAIN     

显示结果集和解释计划不显示统计

4

SET AUTOTRACE TRACEONLY 

显示解释计划和统计,尽管执行该语句但您将看不到结果集

5

SET AUTOTRACE TRACEONLY STATISTICS  

只显示统计

Eg:SET AUTOTRACE ON, set timing on, alter session set time_statistics=true;

以下仅供参考


 

3 Autotrace执行计划的各列的涵义

序号

列名

解释

1

ID_PLUS_EXP                          

每一步骤的行号

2

PARENT_ID_PLUS_EXP        

每一步的Parent的级别号

3

PLAN_PLUS_EXP                   

实际的每步

4

OBJECT_NODE_PLUS_EXP

Dblink或并行查询时才会用到

Autotrace Statistics常用列解释

序号

列名

解释

1

db block gets       

从buffer cache中读取的block的数量

2

consistent gets  

从buffer cache中读取的undo数据的block的数量

3

physical reads   

从磁盘读取的block的数量

4

redo size             

DML生成的redo的大小

5

sorts (memory)  

在内存执行的排序量

6

sorts (disk)         

在磁盘上执行的排序量

 

转载于:https://www.cnblogs.com/wjx515/p/3717989.html

### Hive 执行计划Oracle 执行计划的主要差异 #### 1. 数据存储方式 Hive 是基于 Hadoop 的大数据处理工具,其底层依赖于分布式文件系统(如 HDFS),因此它的执行计划通常会涉及 MapReduce 或 Tez 等计算框架来完成任务。相比之下,Oracle 使用的是关系型数据库管理系统(RDBMS),数据存储在磁盘上的表空间中,并通过优化器生成 SQL 查询的物理执行计划[^1]。 #### 2. 并行化机制 Hive 的查询执行高度并行化,它将整个查询划分为多个阶段(Stages),并通过 `StageExecutionPlan` 来表示这些阶段的关系。每个阶段可以独立运行,并可能进一步拆分成更小的任务单元,在集群中的不同节点上并发执行。而 Oracle 则主要依靠内部线程池实现多核 CPU 上的并行操作,虽然也支持一定程度的分区扫描并行性,但总体来说不如 Hive 那样完全分布式的架构设计[^2]。 #### 3. 查询优化策略 两者都拥有复杂的成本模型用于决定最佳路径;然而由于目标环境的不同,它们所考虑的因素有所区别: - **Hive**: 更加关注如何减少 I/O 开销以及网络传输量,比如通过本地聚合 (`hive.map.aggr`) 减少中间结果集大小等措施。 - **Oracle**: 注重索引利用效率统计信息准确性等方面,力求最小化随机读取次数从而加快响应速度。 此外,针对特殊场景如存在严重偏斜的数据分组时,Hive 提供了一个可配置选项 `<property><name>hive.groupby.skewindata</name>` ,当启用此功能后能够动态调整作业分配模式以缓解热点问题带来的负面影响[^3] 。但在传统 RDBMS 中一般不会遇到如此极端的情况,因为事务隔离级别已经很好地解决了这类冲突。 ```sql -- Example of creating a table in Hive which might be part of its execution planning context. CREATE TABLE pokes (foo INT, bar STRING); ``` #### 4. 错误容忍度和恢复能力 鉴于 Hadoop 生态系统的特性决定了 Hive 对失败具有较高的容忍力——即使某个 mapper 或 reducer 失败了也可以重新调度其他可用资源继续工作直到最终成功为止。反观 Oracle,则更加追求稳定性和一致性保障,在发生异常状况下往往会选择回滚全部变更回到初始状态再尝试修复根本原因后再提交新版本的结果给用户查看。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值