下面的语句有什么不同
ALTER SESSION FORCE PARALLEL QUERY;
ALTER SESSION ENABLE PARALLEL DDL;
ALTER SESSION DISABLE PARALLEL DML;
从优化的角度来看,哪一个更值得推荐。最初,我使用的是DISABLE,后来我测试了ENABLE,它的性能更好,现在FORCE也更好了。有没有可能在任何情况下武力都会适得其反。
发布于 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数据类型的表或模式对象的操作
https://stackoverflow.com/questions/27799186
复制相似问题