引子:以前一直没太关注oracle并行这个特性。前几天一个兄弟碰到的一个问题,才让我觉得这个东西还是有很多需要注意的地方,有必要仔细熟悉下。其实碰到的问题不复杂:
类似如下的一条语句:insert into xxxx select /*+parallel(a) */ * from xxx a;数据量大约在75G左右,这位兄弟从上午跑到下午还没跑完,过来问我咋回事,说平常2hrs能跑完的东西跑了好几个小时还撒动静。查看系统性能也比较 正常,cpu,io都不繁忙,平均READ速度在80M/s左右(勉强凑合),但平均写速度只有10M不到。等待事件里面大量的‘ ‘PX Deq Credit: send blkd’,这里能看出并行出了问题,从而最后得知是并行用法有问题,修改之后20分钟完成了该操作。正确的做法应该是:
alter session enable dml parallel;
insert /*+parallel(xxxx,4) */ into xxxx select /*+parallel(a) */ * from xxx a;
因为oracle默认并不会打开PDML,对DML语句必须手工启用。 另外不得不说的是,并行不是一个可扩展的特性,只有在数据仓库或作为DBA等少数人的工具在批量数据操作时利于充分利用资源,而在OLTP环境下使用并行 需要非常谨慎。事实上PDML还是有比较多的限制的,例如不支持触发器,引用约束,高级复制和分布式事务等特性,同时也会带来额外的空间占用,PDDL同 样是如此。有关Parallel excution可参考官方文档,在Thomas Kyte的新书《Expert Oracle Database architecture》也有精辟的讲述。
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
我在其中一个SESSION 执行
SQL> create table test3 parallel 4 as select * from test1;
表已创建。
SQL> select * from v$mystat where rownum=1;
SID STATISTIC# VALUE
---------- ---------- ----------
151 0 1
SQL>
然后立刻在另一SESSION 乘上一个执行没结束,看下面,这么说是有4个并行的进程在处理了
SQL> select * from v$px_session;
SADDR SID SERIAL# QCSID QCSERIAL# QCINST_ID SERVER_GROUP SERVER_SET SERVER# DEGREE REQ_DEGREE
-------- ---------- ---------- ---------- ---------- ---------- ------------ ---------- ---------- ---------- ----------
6D31E434 131 16 151 107 1 1 1 1 4 4
6D32421C 136 11 151 107 1 1 1 2 4 4
6D3267AC 138 18 151 107 1 1 1 3 4 4
6D31F6FC 132 11 151 107 1 1 1 4 4 4
6D335BD4 151 107 151
SQL> select * from v$mystat where rownum=1;
SID STATISTIC# VALUE
---------- ---------- ----------
137 0 1
SQL>
我加大后
SQL> /
SADDR SID SERIAL# QCSID QCSERIAL# QCINST_ID SERVER_GROUP SERVER_SET SERVER# DEGREE REQ_DEGREE
-------- ---------- ---------- ---------- ---------- ---------- ------------ ---------- ---------- ---------- ----------
6D31864C 126 10 151 107 1 1 1 1 7 10
6D31F6FC 132 17 151 107 1 1 1 2 7 10
6D32421C 136 15 151 107 1 1 1 3 7 10
6D3267AC 138 22 151 107 1 1 1 4 7 10
6D322F54 135 11 151 107 1 1 1 5 7 10
6D31E434 131 18 151 107 1 1 1 6 7 10
6D327A74 139 5 151 107 1 1 1 7 7 10
6D335BD4 151 107 151
已选择8行。
SQL>
奇怪,怎么看只有7个,我那里可是写成
SQL> create table test4 parallel 10 as select * from test1;
表已创建。
怎么少了3个?
不过我实际只有一个CPU的机器,这些说明什么问题呢?
BTW
SQL> SHOW Parameter parallel_max
NAME TYPE VALUE
------------------------------------ ---------------------- -------------------
parallel_max_servers integer 20
SQL>
……………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………
开多少个parallel server也要看当时系统的负载,并行是很耗系统资源的,
这个并行度和你初始化参数有关。CPU_COUNT 、PARALLEL_THREADS_PER_CPU 等等都有关系。如果你建表的时候没有明确指定并行度,那么oracle会自动的根据需要设定并行度。
分享到:
相关推荐
Oracle+Parallel+Execution
oracle中的并行处理,还是值得一看的!
oracle parallel SQL,oracle parallel SQL
oracle的Parallel_并行技术案例详解
Parallel execution 并行查询的性能测试 完整文档
PARALLEL THREAD EXECUTION ISA,5.0,v5.0 | June 2017,Application Guide
旨在允许快速设置功能强大的基于NOW的群集,以运行计算密集型应用程序。 不必专门为使这些集群受益而设计应用程序。
Oracle_Parallel_SQL并行处理1_深入原理介绍.pdf Oracle_Parallel_SQL并行处理2_执行计划分析与问题跟踪.pdf
oracle并行SQL的介绍,对SQL优化很有帮助
This new edition has been expanded to include AWR, Oracle 12c Statistics, interpretation of SQL Monitor reports, Parallel execution, and Exadata-related features. Reading this book and using SQL ...
■CHAPTER 14 Parallel Execution 615 When to Use Parallel Execution 616 A Parallel Processing Analogy 617 Parallel Query 618 Parallel DML 624 Parallel DDL 627 Parallel DDL and Data Loading Using ...
Oracle 官方数据仓库指南,讲解透彻,知识权威,强烈推荐! Oracle® Database Data Warehousing Guide 10g Release 2 (10.2) Contents: Part I Concepts 1 Data Warehousing Concepts...25 Using Parallel Execution
BLOG_Oracle_lhr_【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较BLOG_Oracle_lhr_【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行...
Oracle8i Parallel Server Concepts Release 2 (8.1.6)
Oracle has a really neat feature called parallel execution. The Oracle documentation tells you how to use this feature and what it does. Oracle documentation does not, however, tell you when you ...
Oracle8i Parallel Server Administration, Deployment, and Performance Release 2 (8.1.6)
Parallel_portion Parallel_portion Parallel_portion
Oracle8i Parallel Server Administrator’s Guide Release 2 (8.1.6) for Windows NT
Oracle 数据库体系结构 ORACLE数据库体系结构决定了oracle如何使用网络、磁盘和内存。...在松耦合系统中,在具有ORACLE PARALLEL SERVER 选项时,单个数据库可被多个实例装配,即多个实例共享同一物理数据库
近期来,FreeList的重要作用逐渐为Oracle DBA所认识,网上也出现一些相关的讨论。本文以FreeList为线索对Oracle的存储管理的原理进行较深入的探讨,涉及Oracle段区块管理的原理,... OPS:oracle parallel server