精华内容
下载资源
问答
  • Oracle Parallel 并行处理

    2011-07-07 17:21:41
    oracle中的并行处理,还是值得一看的!
  • oracle parallel

    2020-03-18 16:04:53
    最近优化一个report,首先是因为SQL关联太复杂,就新建了一个物化视图(materialized view),速度提升不少。 直到有一天,有些用户又开始抱怨速度慢了。 ...select /*+ PARALLEL (o, 4) */...

    最近优化一个report,首先是因为SQL关联太复杂,就新建了一个物化视图(materialized view),速度提升不少。

     

    直到有一天,有些用户又开始抱怨速度慢了。

     

    查看执行计划里,应该走索引的字段并没有走索引。

    重新看了下物化视图的SQL,里面有一行parallel 4引起了我的注意。

     

    于是测试了下:

    select /*+ PARALLEL (o, 4) */ from mv_order o;

    这条语句跑了四边mv_order, FULL talbe scan, 花了5s

     

    select /*+ NOPARALLEL (o) */ from mv_order o;

    这条语句走了index,花了600ms

     

    很明显,不是什么时候parallel都会快,反而会变慢。

    展开全文
  • oracle parallel使用总结

    2020-08-16 19:02:37
    oracle parallel使用总结 一.查看parallel的状态 1.select * from v$option where parameter like ‘Parallel%’; Parallel execution :true 表示默认可以执行并行 2.select * from v$pq_sesstat; Queries ...

    oracle parallel使用总结

    一.查看parallel的状态

    1.select * from v$option where parameter like ‘Parallel%’;
    Parallel execution :true 表示默认可以执行并行
    2.select * from v$pq_sesstat;
    Queries Parallelized 查看 并行查询的次数
    DML Parallelized 查看并行 dml的次数
    DDL Parallelized 查看并行ddl的次数
    3. select * from v$pq_tqstat;
    可以查看最近一次并行执行的所有线程的信息

    二.查询启动并行

    1. 指定表 默认增加并行查询
      alter table tb_user parallel;
      alter table tb_user noparallel;
    2. 通过hint指定并行查询 query 默认 session parallel 是开启的
      select /+parallel(t,8)/ from tb_user t;

    三.DML语句并行执行

    需要同时满足两个条件才能并行执行 dml默认是关闭的
    (1)session开启dml并行 开关
    alter session enable parallel dml;
    alter session disable parallel dml;
    (2)使用hint指定并行执行
    insert /+parallel(t,8)/ into tb_user_back as select * from tb_user;

    四. ddl语句的并行执行 也许要同时满足两个条件

    (1)session 开启ddl并行开关 ddl默认是开启的
    alter session enable parallel ddl;
    alter session disable parallel ddl;
    (2)携带并行参数
    create table tb_user_back nologging parallel 4 as select * from tb_user;

    展开全文
  • 3、并行hint的写法 通常我们都会使用hint在SQL级别设置并行,一般不在表上和索引上设置并行度,所以我们上面并行创建表和索引的例子,后面都伴随着一个noparallel,如果在创建表或索引时使用了并行,要把它改成no...

    1、什么时候使用并行?

    常见的场景有:

    a)

        普通SQL最常见的情况就是大表的全表扫描,还有就是大的索引的快速全扫描(注意,index fast full scan可以使用并行,index full scan 不能使用并行)。

        需要纠正一个误区:SQL执行慢就可以通过使用并行或是增加并行来提高速度。

        正解:并行能否发挥作用要看SQL的具体执行计划,比如标量子查询或是DB link,增大并行带来的性能提升是微乎其微的!

        多大的表算大表?

        至少要百万级以上记录的表吧。如果几亿甚至十几亿记录数的表全表扫描不使用并行,SQL的执行时间会相当长,特别是表在SQL执行的过程中如果还有其他session的DML操作的时候。

        OLTP系统的正常事务一般不会使用大表全扫描的执行计划,如果有一些统计分析的业务,建议在系统资源相对空闲的时候开启并行。

    b)

        用create table As Select创建一张大表,如

        create table test parallel 16 as select .... from t1,t2 where .....;

        alter table test noparallel;

    c)

        创建或重建索引

        create index idx_test on table_A(name) parallel 8;

        alter index idx_test noparallel;

    d)

        大表收集统计信息,可以设置并行,如degree=>8

        其他不常见的操作还有表压缩等,一些比较耗时的分区操作也可以查查语法,看看是否支持并行操作。

    2、并行度的选择

        一般使用2的幂作为并行度,如2、4、8、16等,正常情况并行度不要设置太高,建议最多不要超过32。当然,特殊情况特殊对待,强悍的系统(比如exadata),如果需要非常高的响应速度,并行度再多个几倍也不是问题。并行高的时候并发就要减少,否则可能会耗光并行资源。

    3、并行hint的写法

        通常我们都会使用hint在SQL级别设置并行,一般不在表上和索引上设置并行度,所以我们上面并行创建表和索引的例子,后面都伴随着一个noparallel,如果在创建表或索引时使用了并行,要把它改成noparallel或parallel 1 :

        alter table/index table_name/index_name noparallel/parallel 1;

    Hint的写法在10g和11g+有很大差别,11g+就方便很多。

    10g 及以下:

        每个需要并行的表都要指定并行,如 /*+ parallel(a 4) parallel(b 4) */  ,如果SQL涉及的表较多,那么hint会比较长;如果内联视图较多,经常会出来遗漏的情况。如果某个表没有指定并行,那么就只能串行,如果某个大表忘了写,就会出现性能瓶颈。

    11g+:

        只要在整个sql的任何一个关键字(select、update、insert、delete、merge)后面出现一次parallel(n),那么整个SQL相关的表,都会使用并行,在写法上非常的简洁,而且不会遗漏。现在新开发的应用都应该是11gR2以上了,忘了10g的写法吧。

     注意:

    /*+ parallel */ 或 /*+ parallel 8 */是错误的并行hint写法,这些不正确的写法会导致SQL使用一个比较大的并行度,消耗大量的系统资源。

        

    4、并行DML

        DML有4种,INSERT、DELETE、UPDATE还有MERGE,如:

        insert /*+ parallel(4) */ into t1 select .... from ....;

    这个写法将会在select部分使用并行度为4的并行,DML部分的并行并没有真正的启用,DML的并行默认是关闭的,如果需要使用,必须在session级别通过下面命令开启:

        alter session enable parallel dml;--推荐写法

        或者alter session force parallel dml parallel n; --用force的语法,可以使下面的dml即使不用parallel的hint,也会使用并行度为n的并行。

    执行这个命令后,才真正开启了DML的并行。

    注意:

    开启了DML的并行后,接下来的DML语句将会产生一个表锁,在commit之前,当前session 不能对该表做查询和dml操作,其他session也不能对该表做DML操作。

    所以建议,并行dml语句,应该在语句执行后立即commit; 然后再关闭并行dml,完整的过程应该是:

    alter session enable parallel dml;

    your dml;

    commit;

    alter session disable parallel dml;

    或者alter session force parallel dml parallel 1;

    补充:

        parallel 的hint并不能保证sql一定会使用并行,如果优化器认为sql使用索引更高效,可能会使用索引而不使用并行。如果要确保SQL使用并行,有时可能要结合full 的hint,这种情况不多见。

    展开全文
  • oracle parallel SQL

    2013-11-12 22:13:31
    oracle parallel SQL,oracle parallel SQL
  • Oracle Parallel并行查询

    千次阅读 2018-11-26 13:48:47
    SQL Parallel并行查询功能条件语法 功能 默认是一个cpu的进程执行一个串行的sql语句,现在cpu都具有多线程核心,可以对数据量过大的一个串行的任务,拆分成若干个子任务进行并行处理。cpu的总线程决定了parallel调用...

    SQL Parallel并行查询

    功能

    默认是一个cpu的进程执行一个串行的sql语句,现在cpu都具有多线程核心,可以对数据量过大的一个串行的任务,拆分成若干个子任务进行并行处理。cpu的总线程决定了parallel调用的最大资源。

    条件

    必须有足够的资源进行使用——如:cpu、I/O等
    必须有一个非常大的任务

    语法

    alter table [table_name] parallel 2; --oracle 创建这个表的任务时,并行度为4
    alter table [table_name] parallel; --Oracle创建这个表的任务时,根据系统本身工作负载和查询本身大小来确定适合的并行度。oracle能动态的增加和减少所需要的并行资源。

    开启parallel功能语句:
    alter session enable parallel dml;

    /+parallel(table_short_name,cash_number)/
    select /+parallel(t,4)/ emp_id,count() from emp_trade t;
    insert /
    +parallel(4)/ into emp select /+parallel(4)*/ emp_id,emp_name from emp_trade t;
    注:这个可以加到insert、delete、update、select的后面来使用(和rule的用法差不多,有机会再分享rule的用法)

    关闭parallel功能语句:
    alter session disable parallel dml;

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

    展开全文
  • Oracle Parallel使用方法

    万次阅读 2018-06-12 09:25:59
    告知oracle,对T1启用parallel查询,但并行度要参照系统的资源负载状况来确定。 利用hints提示,启用并行,同时也可以告知明确的并行度,否则oracle自行决定启用的并行度,这些提示只对该sql语句有效。 SQL> select ...
  • 一、Parallel 1. 用途 强行启用并行度来执行当前SQL。这个在Oracle 9i之后的版本可以使用,之前的版本现在没有环境进行测试。也就是说,加上这个说明,可以强行启用Oracle的多线程处理功能。举例的话,就像电脑装...
  • 引子:以前一直没太关注oracle并行这个特性。前几天一个兄弟碰到的一个问题,才让我觉得这个东西还是有很多需要注意的地方,有必要仔细熟悉下。其实碰到的问题不复杂: 类似如下的一条语句:insert into xxxx select ...
  • 11月5日,由Senior DBA姚宇老师在“DBA+深港群”进行了一次关于“Oracle parallel相关参数设置不当引起的系统故障”的线上主题分享。小编特别整理出其中精华内容,供大家学习交流。 嘉宾简介 “DBA+社群”香港...
  • WITH T1 AS (SELECT /*+PARALLEL(S,4)*/ S.BUSI_TACHE, CASE WHEN S.FAILURE_REASON = '210023' THEN 1 ELSE 0 END CC, CASE ...
  • Oracle Parallel 并发查询

    万次阅读 2018-09-03 16:39:23
    举例的话,就像电脑装了多核的CPU,但大多情况下都不会完全多核同时启用(2核以上的比较明显),使用parallel说明,就会多核同时工作,来提高效率。但本身启动这个功能,也是要消耗资源与性能的。所有,一般都...
  • oracleParallel_并行技术案例详解
  • ORACLE parallel并行参数设置

    千次阅读 2014-12-14 21:06:48
    PARALLEL_MAX_SERVERS参数用于设置系统中允许的最大并行进程数 2009-07-10 12:00:27 分类: Linux ...Oracle的文档对于这个参数的描述如下: PARALLEL_MAX_SERVERS specifies the maximum nu
  • Oracle Parallel模式

    2019-09-28 09:25:08
    一、Parallel1. 用途强行启用并行度来执行当前SQL。这个在Oracle 9i之后的版本可以使用,之前的版本现在没有环境进行测试。也就是说,加上这个说明,可以强行启用Oracle的多线程处理功能。举例的话,就像电脑装了...
  • [size=medium][color=red][b] 1....因此,用PARALLEL调用CPU线程值应设定为小于最大CPU线程的数值(笔者一般采用的值为:CPU线程总数-2)以避免将所有CPU资源强行分配给Oracle使用后导致系统无响应等情况发生。
  • Oracle Parallel Execution

    千次阅读 2013-12-14 15:01:54
    PARALLEL_DEGREE_POLICY  Specifies whether or not automatic degree of Parallelism,statement queuing, and in-memory parallel execution will be enabled. MANUAL is the default, which disables automatic d
  • oracle parallel参数(转)

    千次阅读 2013-06-26 18:20:34
    在数据仓库中使用并行QUERY,需要考虑的参数 ...默认的值为MANUAL如果设置为AUTO,* Oracle会根据表的大小和操作类型,自动选择并行度。* 如果要求的并行度无法到达, 比如当前所有的parallel server都很繁忙。O...
  • Oracle Parallel SQL

    2013-11-18 23:20:54
    oracle并行SQL的介绍,对SQL优化很有帮助
  • 对于一个大的任务,一般的做法是利用一个进程,串行的执行,如果系统资源足够,可以采用parallel技术,把一个大的任务分成若干个小的任务,同时启用n个进程/线程,并行的处理这些小的任务,这些并发的进程称为并行...
  • 数据库支持多少个并行线程数。 cpu_count * parallel_threads_per_cpu show parameter cpu; NAME TYPE VALUE ------------------------------- ------- ----- cpu_count ...
  • 步入正题,这次来体验一下Oracle 中的并行参数PARALLEL 如何使用与使用起来后它的效果是怎样的。 首先来翻译一下这个英文的意思: 翻译出来的结果是这样的 parallel adj. 平行的;极相似的;同时发生的;相应的;对应的
  • Oracle Parallel 多线程

    万次阅读 2012-04-14 10:45:43
    一、Parallel 1. 用途 强行启用并行度来执行当前SQL。这个在Oracle 9i之后的版本可以使用,之前的版本现在没有环境进行测试。也就是说,加上这个说明,可以强行启用Oracle的多线程处理功能。举例的话,就像电脑装...
  • 什么叫Oracle Parallel模式 Oracle Parallel用法Oracle技术 2011-03-23 15:51:08 阅读105 评论0 字号:大中小 订阅 . 一、Parallel 1. 用途 强行启用并行度来执行当前SQL。这个在Oracle 9i之后的版本可以...
  • Oracle Parallel

    2014-10-13 14:08:55
    每当ORACLE进行查询时,就会产生一个session,对于oracle 每个session占用一个CPU。当整个系统只有一个人在用的时候,剩下7个CPU,是空闲状态。那么就可以用parallel语句合理利用起来剩下7个CPU。 注意:当系统有...
  • Oracle Parallel Execution(并行执行)

    万次阅读 2010-09-01 02:20:00
      关于Oracle 的并行执行,Oracle 官方文档有详细的说明:  Using Parallel Execution ...
  • 之前没特别注意,在有些场景下希望使用并行索引扫描的时候,发现parallel_index hint并没有生效,于是抽空看了下文档:The PARALLEL_INDEX hint instructs the optimizer to use the specified number of concurrent...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,897
精华内容 15,158
关键字:

oracleparallel