dml并行 oracle_oracle 并行dml - CSDN
精华内容
参与话题
  • alter session enable parallel dml

    万次阅读 2013-06-16 00:11:41
    之前我一直不理解为什么做并行DML之前要加上:alter session enable parallel dml,因为有一个假象蒙蔽了我: 下面的执行计划是没有执行alter session enable parallel dml产生的: EXPLAIN PLAN FOR UPDATE/*+...

    之前我一直不理解为什么做并行DML之前要加上:alter session enable parallel dml,因为有一个假象蒙蔽了我:

    下面的执行计划是没有执行alter session enable parallel dml产生的:

    EXPLAIN PLAN FOR UPDATE/*+parallel(t 8)*/ test1 t SET object_id=1;

    SELECT * FROM table (DBMS_XPLAN.display(NULL, NULL, 'BASIC +PARALLEL'));


    当我看到执行计划里面有Q1,00这样的描述,就以为并行度hint生效了,但是我没注意到,这里并行度只用在对test1表的全盘扫描上,并没有用在update上!!!!!其实这还是远远不够的。下面是执行了alter session enable parallel dml产生的执行计划:


    这里可以看到执行计划上的差别:这次不止全盘扫描时用到了并行度,而且update时也用上了并行度,这才是我们需要的!!

    最后注意要把session的并行度关掉:alter session disable parallel dml

    展开全文
  • Oracle Parallel使用方法

    万次阅读 2018-06-12 09:25:59
    转自:https://blog.csdn.net/richieruan/article/details/50534886一、 并行查询并行查询允许将一个sql select语句划分为多个较小的查询,每个部分的查询并发地运行,然后将各个部分的结果组合起来,提供最终的结果...

    转自:https://blog.csdn.net/richieruan/article/details/50534886

    一、 并行查询

    并行查询允许将一个sql select语句划分为多个较小的查询,每个部分的查询并发地运行,然后将各个部分的结果组合起来,提供最终的结果,多用于全表扫描,索引全扫描等,大表的扫描和连接、创建大的索引、分区索引扫描、大批量插入更新和删除
     
    1.    启用并行查询
    SQL> ALTER TABLE T1 PARALLEL;
    告知oracle,对T1启用parallel查询,但并行度要参照系统的资源负载状况来确定。
    利用hints提示,启用并行,同时也可以告知明确的并行度,否则oracle自行决定启用的并行度,这些提示只对该sql语句有效。
    SQL> select /*+ parallel(t1 8) */ count(*)from t1;
     
    SQL> select degree from user_tables where table_name='T1';
    DEGREE
    --------------------
      DEFAULT
     
    并行度为Default,其值由下面2个参数决定
    SQL> show parameter cpu
     
    NAME                                TYPE       VALUE
    ----------------------------------------------- ------------------------------
    cpu_count                           integer    2
    parallel_threads_per_cpu            integer    2
     
    cpu_count表示cpu数
    parallel_threads_per_cpu表示每个cpu允许的并行进程数
    default情况下,并行数为cpu_count*parallel_threads_per_cpu
     
    2.    取消并行设置
    SQL> alter table t1 noparallel;
    SQL> select degree from user_tables wheretable_name='T1';
     
    DEGREE
    ----------------------------------------
            1
     
    3.    数据字典视图
    v$px_session
    sid:各个并行会话的sid
    qcsid:query coordinator sid,查询协调器sid
     
    二、 并行dml
    并行dml包括insert,update,delete,merge,在pdml期间,oracle可以使用多个并行执行服务器来执行insert,update,delete,merge,多个会话同时执行,同时每个会话(并发进程)都有自己的undo段,都是独立的一个事务,这些事务要么由pdml协调器进程提交,要么都rollback。
    在一个有充足I/o带宽的多cpu主机中,对于大规模的dml,速度可能会有很大的提升,尤其是在大型的数据仓库环境中。
    并行dml需要显示的启用
    SQL> alter session enable parallel dml;
     
    Disable并行dml
    SQL> alter session disable parallel dml;
     
    三、 并行ddl
    并行ddl提供了dba使用全部机器资源的能力,常用的pddl有
    create table as select ……
    create index
    alter index rebuild
    alter table move
    alter table split
    在这些sql语句后面加上parallel子句

    SQL> alter table t1 move parallel;
    Table altered
    SQL> create index T1_IDX on T1 (OWNER,OBJECT_TYPE)
     2   tablespace SYSTEM
    3        parallel;
    4        ;




    1.  用途


    强行启用并行度来执行当前SQL。这个在Oracle 9i之后的版本可以使用,之前的版本现在没有环境进行测试。也就是说,加上这个说明,可以强行启用Oracle的多线程处理功能。举例的话,就像电脑装了多核的CPU,但大多情况下都不会完全多核同时启用(2核以上的比较明显),使用parallel说明,就会多核同时工作,来提高效率。


    但本身启动这个功能,也是要消耗资源与性能的。所有,一般都会在返回记录数大于100万时使用,效果也会比较明显。


    2.  语法


    /*+parallel(table_short_name,cash_number)*/


    这个可以加到insert、delete、update、select的后面来使用(和rule的用法差不多,有机会再分享rule的用法)


    开启parallel功能的语句是:


    alter session enable parallel dml;


    这个语句是DML语句哦,如果在程序中用,用execute的方法打开。

    4.  Parallel也可以用于多表


    多表的话,就是在第一后面,加入其他的就可以了。具体写法如下:


    /*+parallel(t,10) (b,10)*/


    5.  小结


    关于执行效率,建议还是多按照index的方法来提高效果。Oracle有自带的explan road的方法,在执行之前,先看下执行计划路线,对写好的SQL tuned之后再执行。实在没办法了,再用parallel方法。Parallel比较邪恶,对开发者而言,不是好东西,会养成不好习惯,导致很多bad SQL不会暴漏,SQL Tuning的能力得不到提升。我有见过某些人create table后,从不create index或primary key,认为写SQL时加parallel就可以了。

    展开全文
  • Oracle 并行查询

    万次阅读 2016-03-31 15:31:39
    所谓并行执行,是指能够将一个大型串行任务(任何DML,一般的DDL)物理的划分为叫多个小的部分,这些较小的部分可以同时得到处理。 何时使用并行执行: 1、必须有一个非常大的任务 2、必须有充足的资源(CPU,I...

    所谓并行执行,是指能够将一个大型串行任务(任何DML,一般的DDL)物理的划分为叫多个小的部分,这些较小的部分可以同时得到处理。

    何时使用并行执行:
    1、必须有一个非常大的任务

    2、必须有充足的资源(CPU,I/O,MEMORY)


    并行查询

    并行查询允许将一个SQL SELECT 语句划分为多个较小的查询,每个查询并发的运行。最后将每个较小查询得到的结果组合起来,得到最终结果。

    启动并行查询几种方式:

    1、在查询中使用一个hint提示:select /*+ parallel(4)  */  count(*)  from test_a ;---指定一个并行度为4的并行查询。

    2、利用alter table修改表:

    alter table test_a parallel 4;--告诉oracle,在创建这个表的执行计划时,使用并行度4

    alter table test_a parallel;--告诉oracel,“请考虑并行执行。”oracle 会根据系统工作负载和查询本身来确定适当的并行度。资源充足,并行度上升,资源稀缺,并行度下降。oracle能动态的增加或减少查询所需要的并发资源量。                ---更喜欢用此种方式启动并行查询。



    同类文章:http://blog.csdn.net/zengmingen/article/details/50998632



    展开全文
  • 我们在用create index inx_1 on t(col1)创建索引时,oralce会lokc会全表,这时如果是生产系统,可能会引起重大事故,所有的dml操作均需要等待.  但有时我们为了创建索引时不影响生产系统的dml执行,可以创建索引时...

      我们在用create index inx_1 on t(col1)创建索引时,oralce会lokc会全表,这时如果是生产系统,可能会引起重大事故,所有的dml操作均需要等待.

     但有时我们为了创建索引时不影响生产系统的dml执行,可以创建索引时使用online关键字,这样,创建的索引时,再执行dml时,不会阻塞dml操作.

    展开全文
  • oracle hint 和 并行

    千次阅读 2016-08-18 10:49:14
    --------HINT--------------------- 1、给优化器多出一种选择 种类: 单表 多表 子查询 整个SQL语句 ...2、HINT 指定表名不能带上所在SCHEMA名 如果有别名应该使用别名 ...3、HINT生效的范围仅限于本身所在的查询...
  • oracle并行度调整

    千次阅读 2011-11-02 13:53:43
    oracle并行度使用多个cpu与io来执行数据库操作,能够显著改善大型数据库操作性能,比如DSS或数据仓库 适用于 大表查询,join,分区索引的查询 创建大量的index 创建大量的表(包括固化视图) 批量的insert,...
  • Oracle并行查询

    千次阅读 2018-06-07 09:58:19
    所谓并行执行,是指能够将一个大型串行任务(任何DML,一般的DDL)物理的划分为叫多个小的部分,这些较小的部分可以同时得到处理。何时使用并行执行:1、必须有一个非常大的任务2、必须有充足的资源(CPU,I/O,MEMORY...
  • 如何加速Oracle大批量数据处理

    万次阅读 2010-01-12 14:57:00
    如何加速Oracle大批量数据处理一、 提高DML操作的办法:简单说来:1、暂停索引,更新后恢复.避免在更新的过程中涉及到索引的重建.2、批量更新,每更新一些记录后及时进行提交动作.避免大量占用回滚段和或临时表...
  • Oracle并行update

    千次阅读 2017-04-21 10:42:58
    最近在用Oracle update 一个大表,发现 update的速度很慢,上网找了很多方法。修修攺改,最后发现 update /*+ parallel(x,100)*/ all01 x set timee=to_date(riqi||' '||shijian,'yyyy-mm-dd hh24:mi:ss') commit;并...
  • Oracle Parallel 多线程

    万次阅读 2013-10-14 12:57:18
    强行启用并行度来执行当前SQL。这个在Oracle 9i之后的版本可以使用,之前的版本现在没有环境进行测试。也就是说,加上这个说明,可以强行启用Oracle的多线程处理功能。举例的话,就像电脑装了多核的CPU,但大多情况...
  • ORACLE并行操作学习

    千次阅读 2011-11-20 12:52:47
    对于一个大的任务,一般的做法是利用一个进程,串行的执行,如果系统资源足够,可以采用parallel技术,把一个大的任务分成若干个小的任务,同时启用n个进程/线程,并行的处理这些小的任务,这些并发的进程称为并行...
  • oracle 并行执行sql

    千次阅读 2018-12-06 21:43:24
    并行执行执行sql alter session enable parallel dml; update /*+ parallel(t,100)*/ People t set t.handle_flag='0' where t.handle_flag is null ; commit; alter session disable parallel dml 如果数据量大 ...
  • Oracle数据库中的锁

    千次阅读 2019-04-08 21:27:50
    数据库锁 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。...
  • 高效数据插入 直接路径插入,使用以下Hints Append:用于insert into select语句 Append_VALUES :用于insert into 语句 设置表、索引或表空间为NOLOGGING,NOLOGGING在以下情况下不写重做日志 ...
  • 对于一个大的任务,一般的做法是利用一个进程,串行的执行,如果系统资源足够,可以采用parallel技术,把一个大的任务分成若干个小的任务,同时启用n个进程/线程,并行的处理这些小的任务,这些并发的进程称为并行...
  • ORA-14411 该 DDL 不能与其他 DDL 并行运行处理办法 存在问题:在oracle数据库中执行alter table 添加字段操作时,一直卡住 在oracle数据库中执行alter table语句时,返回的是ORA-14411:该DDL不能与其他DDL...
  • Oracle表的并行

    千次阅读 2016-03-28 15:58:16
    查看dba_tables数据字典时,可以发现有“DEGREE”字段,这个字段表示的就是数据表的并行度。这个参数的设置,关系着数据库的I/O,以及sql的执行效率。   并行度的优点就是能够最大限度的利用机器的多个cpu...
  • oracle 并行parallel

    千次阅读 2018-01-08 15:43:34
    并行处理的机制是:把一个要扫描的数据集分成很多小的数据集,oracle会启动几个并行服务进程同时处理这些小数据集,最后将结果汇总,作为最终的处理结果返回给用户。   并行处理的注意点:1、并行查询可以在查询...
  • Oracle并行模式(Parallel)

    万次阅读 2017-09-06 18:00:39
    1. 实例 (1)insert 加速 insert into /*+ append parallel nologging */ dcustcomposmsg  select /*+ parallel(e,18)*/ * from dcustcomposmsg_new e;  commit;...CREATE TABLE TEMP_DCUST_GRA
1 2 3 4 5 ... 20
收藏数 11,082
精华内容 4,432
热门标签
关键字:

dml并行 oracle