首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在并行查询/DML/DDL中使用FORCE、ENABLE、DISABLE关键字有什么区别

在并行查询/DML/DDL中使用FORCE、ENABLE、DISABLE关键字有什么区别
EN

Stack Overflow用户
提问于 2015-01-06 20:59:03
回答 1查看 11.8K关注 0票数 2

下面的语句有什么不同

代码语言:javascript
运行
复制
ALTER SESSION FORCE   PARALLEL QUERY;
ALTER SESSION ENABLE  PARALLEL DDL;
ALTER SESSION DISABLE PARALLEL DML;

从优化的角度来看,哪一个更值得推荐。最初,我使用的是DISABLE,后来我测试了ENABLE,它的性能更好,现在FORCE也更好了。有没有可能在任何情况下武力都会适得其反。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-06 23:12:38

请参考http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_2013.htm

并行DML | DDL |查询

PARALLEL参数确定是否考虑并行执行会话中的所有后续DML、DDL或查询语句。此子句使您能够在当前会话期间重写表的并行度,而不更改表本身。在为DML执行此子句之前,必须提交或回滚未提交的事务。

启用子句

指定ENABLE可并行执行会话中的后续语句。这是DDL和查询语句的默认设置。·DML:如果指定了parallel提示或parallel子句,则以并行模式执行DML语句。

·DDL:如果指定了parallel子句,则以并行模式执行DDL语句。

·查询:如果指定了parallel提示或parallel子句,则以并行模式执行查询。

对ENABLE子句的限制不能使用ENABLE指定可选的并行整数。

禁用子句

指定DISABLE可连续执行会话中的后续语句。这是DML语句的默认设置。·DML: DML语句是串行执行的。

·DDL: DDL语句是串行执行的。

·查询:查询是串行执行的。

对DISABLE子句的限制不能使用DISABLE指定可选的并行整数。

强制子句

FORCE强制并行执行会话中的后续语句。如果未指定parallel子句或提示,则使用默认的并行度。此子句覆盖会话中后续语句中指定的任何parallel_clause,但被并行提示覆盖。·DML:如果没有违反并行DML限制,会话中的后续DML语句将以默认的并行度执行,除非此子句中指定了一个并行度。

·DDL:会话中的后续DDL语句将以默认的并行度执行,除非此子句中指定了并行度。所得到的数据库对象将与它们相关联的是流行的并行度。

指定FORCE DDL会自动导致在此会话中创建的所有表都使用默认的并行度级别进行创建。效果与您在CREATE TABLE语句中指定了parallel_clause (具有缺省度数)是一样的。

·查询:后续查询使用默认的并行度执行,除非此子句中指定了并行度。

PARALLEL integer指定一个整数以显式指定并行度:·对于强制DDL,该度覆盖后续DDL语句中的任何parallel子句。

·对于强制DML和查询,度数覆盖数据字典中当前为表存储的度数。

·通过提示在语句中指定的度数将覆盖强制的度数。

无论此子句如何,以下类型的DML操作都不会并行化:·对群集表的操作

·具有写入或读取数据库或包状态的嵌入式函数的操作

·对具有可能触发的触发器的表的操作

·对包含对象类型或LONG或LOB数据类型的表或模式对象的操作

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27799186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档