oracle并行度调整
来源:互联网 发布:php问答系统 编辑:程序博客网 时间:2024/05/15 13:42
oracle并行度使用多个cpu与io来执行数据库操作,能够显著改善大型数据库操作性能,比如DSS或数据仓库
适用于
大表查询,join,分区索引的查询
创建大量的index
创建大量的表(包括固化视图)
批量的insert,update,delete
查行执行适合场景
对称多处理器,集群,并行系统
足够的带宽
cpu利用不足
足够的内存用于其他操作,排序,hash,缓存
查行执行适合与dss与数据仓库,也适合于批量操作的OLTP系统,不适合OLTP简介的dml或select操作
并行执行不适合场景
非常短的查询或事务
这包括大多数的OLTP,因为并行协调的成本高于并行的好处
大量利用io,cpu,内存的操作
基本硬件要求
并行执行设计需要多个cpu与io来实现快速的查询,每个硬件都应该维持在同一个吞吐量
哪些操作可以用并行
全表查询,分区查询,索引快速查询
join操作
nested loop, sort merge, hash, and star transformation
DDL语句
CREATE
TABLE
AS
SELECT
, CREATE
INDEX
, REBUILD
INDEX
, REBUILD
INDEX
PARTITION
, and MOVE
/SPLIT
/COALESCE
PARTITION
DML语句
INSERT
AS
SELECT
, UPDATE
, DELETE
, and MERGE
operations
并行执行的执行计划
执行
EXPLAIN PLAN FORSELECT /*+ PARALLEL(4) */ customers.cust_first_name, customers.cust_last_name, MAX(QUANTITY_SOLD), AVG(QUANTITY_SOLD)FROM sales, customersWHERE sales.cust_id=customers.cust_idGROUP BY customers.cust_first_name, customers.cust_last_name;
查看执行计划
SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY());
执行并行程度
ALTER TABLES sales PARALLEL 8;ALTER TABLE customers PARALLEL 4
默认并行度
单实例:PARALLEL_THREADS_PER_CPUx CPU_COUNT
集群: PARALLEL_THREADS_PER_CPUx CPU_COUNT x INSTANCE_COUNT
parallel_threads_per_cpu
查询
showparameter parallel_threads_per_cpu
PARALLEL_DEGREE_POLICY设置为auto说明由oracle决定并行执行
自动并行流程
sql发布
oracle优化解析并生成执行计划
查看PARALLEL_MIN_TIME_THRESHOLD参数值
如果执行时间小于该值就串行执行否则并行执行
设置自动并行度
方法
1
altersession set parallel_degree_policy=limited;
altertable paralle(degree default);
方法
2
通过语句设置并行度
并行度
10
SELECT /*+ parallel(10) */ ename, dname FROM emp e, dept d
WHERE e.deptno=d.deptno;
非并行度
SELECT /*+ no_parallel */ ename, dname FROM emp e, dept d
WHERE e.deptno=d.deptno;
自动并行度
SELECT /*+ parallel(auto) */ ename, dname FROM emp e, dept d
WHERE e.deptno=d.deptno;
In-memory并行PARALLEL_DEGREE_POLICY设置为auto表示并行执行时利用buffer cache数据,
PARALLEL_ADAPTIVE_MULTI_USER默认为true保证自适应并行执行,oracle根据执行时间来决定是否来并行执,从而避免超载
PARALLEL_DEGREE_POLICY参数数决定是否自动DOP,并行语句队列,In-Meory并行执行
有以下几个值
MANUAL 关闭auto DOP,并行语句队列,In-Memory并行,在11.2为默认
LIMITED关闭auto DOP,但开启并行语句队列,In-Memory并行,可以在语句中加入DOP设置来并行执
AUTO开启所有三项
并行DML
alter session enable parallel dml;
只有设置了DML并行才会在适合的语句调用并行
在insert 的SQL中使用APPEND,如:
Insert /*+append */ into t select * from t1;
Oracle 执行直接加载时,数据直接追加到数据段的最后,不需要花费时间在段中需找空间,数据不经过data buffer直接写到数据文件中,效率要比传统的加载方式高。- oracle并行度调整
- oracle 并行调整
- oracle 并行之并行度篇
- Oracle表的并行度
- oracle 并行
- oracle 并行专题
- Oracle合并行 解析
- ORACLE并行操作
- Oracle Redo 并行机制
- Oracle Redo 并行机制
- ORACLE并行操作学习
- ORACLE 的并行执行
- Oracle 并行DDL简介
- ORACLE并行FAQ
- Oracle并行执行简介
- ORACLE-并行查询技巧
- Oracle并行FAQ
- Oracle海量数据处理-并行
- 如何将int转换成String
- UIPinchGestureRecognizer 缩放,移动,旋转,UIImagePickerController 横屏,全屏 的实现
- windows电脑上快捷键按钮大全(包括部分dos快捷键的使用)
- 调试H-JTAG时出现Can't halt the target的问题
- 基于 PhoneGap 与 Java 开发的 Android 应用的性能对比
- oracle并行度调整
- ntfs下数据恢复软件编写心得
- POLL函数
- C 转换函数族 ((atof, atoi, atol), (strtod, strtol, strtoul)), gcvt, (toascii, tolower, toupper)
- shell中expr备忘
- 广播接收者
- JAVA序列化基础知识Serializable与Externalizable的区别(改变默认的序列化/反序列化行为)
- Linux NFS 和 Samba 共享配置
- Usability Engineering techniques introduction(可用性工程(English))